Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony YAML使用逗号解析内容_Php_Symfony_Yaml - Fatal编程技术网

Php Symfony YAML使用逗号解析内容

Php Symfony YAML使用逗号解析内容,php,symfony,yaml,Php,Symfony,Yaml,Symfony Yaml组件中是否存在缺陷,或者这是Yaml标准的预期行为?根据我的理解,下面场景中的逗号应该作为常规内容字符 \Symfony\Component\Yaml\Yaml::parse("test: 1,2"); 实际结果: array("test" => 12) 预期结果: array("test" => "1,2") Symfony\Component\Yaml\Yaml::parse('test: "1,2"'); 这不是Symfony

Symfony Yaml组件中是否存在缺陷,或者这是Yaml标准的预期行为?根据我的理解,下面场景中的逗号应该作为常规内容字符

\Symfony\Component\Yaml\Yaml::parse("test: 1,2");
实际结果:

array("test" => 12)
预期结果:

array("test" => "1,2")
Symfony\Component\Yaml\Yaml::parse('test: "1,2"');

这不是Symfony中的bug——或者至少是Symfony预期的行为。您向解析器传递了一个看起来像数字的非引号值,因此解析器将其视为数字,并去掉非数字字符。Symfony文档在其中,尽管这与下划线有关。文件明确规定:

最后,在其他情况下,无论使用单引号还是双引号,字符串都必须被引用:

  • 当字符串看起来像一个数字时,例如整数(例如2、14等)、浮点数(例如2.6、14.9)和指数数(例如12e7等)(否则,它将被视为一个数值)
如果运行以下代码,将获得预期结果:

array("test" => "1,2")
Symfony\Component\Yaml\Yaml::parse('test: "1,2"');
结果:

["test" => "1,2"]

请注意双引号是如何表示不应被视为数字文字的字符串值的。

Yes。我直接使用Symfony的
Yaml::parse()
命令以两种方式运行代码。我使用了OP的代码和我发布的代码,得到了我发布的结果。我更新了我的答案,使文本更加清晰。在Symfony Yaml 2.8中,您可以跟踪内联类中evaluateScalar方法的代码,内联类中的evaluateScalar方法删除逗号,并键入将字符串转换为float“(float)str_replace(‘,‘,‘,‘,‘,’,‘,$scalar);”,因为第一个字符是数字。