PHP YAML解析器

时间:2008-11-16 20:31:32

标签: php parsing yaml

有没有人知道PHP的YAML Parser?如果是这样,这个图书馆的利弊是什么?

8 个答案:

答案 0 :(得分:136)

  

上次更新:2017年7月26日

以下是PHP中YAML状态的摘要:

  • C库的包装:如果你需要纯粹的速度,你可能会想要这些:
    • php-yamlLibYAML的包装器。可作为PECL扩展;它也是PHP's docs上的那个。
    • syck:绑定到syck;也可作为PECL扩展。 (注明日期,见下文)

  • 纯PHP实现:

    • sfYaml:Symfony的YAML组件。你可以看到其作者的动机here。他想要的东西是“易于使用,快速,经过单元测试并且有明确的错误信息。”
    • spyc:没有依赖关系的YAML解析器

在撰写本文时,上述库的最新版本发布日期以及它们支持的YAML spec版本(1.2是最新版本):

php-yaml   1.3.0     2016-09-24     YAML 1.1  [PHP 5]
php-yaml   2.0.0     2016-09-24     YAML 1.1  [PHP 7]
syck       0.9.3     2008-11-18     YAML 1.0
sfYaml     3.3.5     2017-06-15     YAML 1.1, most of 1.2
spyc       0.6.2     2017-02-24     YAML 1.1 

答案 1 :(得分:48)

Spyc:https://github.com/mustangostang/spyc

纯PHP实现,因此您无需对服务器进行任何修改即可进行安装。如果速度令人担忧,它可能不是理想的解决方案,但如果您使用YAML进行配置或相对小批量使用,那么这是一个很棒的解决方案。

给定一个YAML文档,Spyc将返回一个你认为合适的数组。

require_once "spyc.php";
$data = Spyc::YAMLLoad($myfile);

给定一个数组,Spyc将返回一个字符串,其中包含根据您的数据构建的YAML文档。

$yaml_str = Spyc::YAMLDump($myarray);

答案 2 :(得分:15)

symfony framework非常大量地使用YAML,这个blog post by Grégoire Hubert演示了在非symfony项目中使用他们的YAML库。

答案 3 :(得分:7)

Symfony2有一个YAML组件,它支持大多数的YAML 1.2规范

https://github.com/symfony/Yaml

答案 4 :(得分:3)

答案 5 :(得分:3)

如果您在项目中使用了大量的YAML,您可能会发现像spyc或Symfony YAML这样的纯PHP库不够快。 C YAML解析器至少有两个PHP绑定:

  • yaml - LibYAML YAML 1.1解析器库的包装器
  • syck - Syck YAML 1.0解析器库的包装器

答案 6 :(得分:2)

尝试 sfYaml ,这是我所知道的最好的。

Symfony和Doctrine ORM正在使用这个。

要获得它,您可以Download Doctrine 1.2sfYaml目录中提取vendor

请告诉我们是否符合您的需求。

答案 7 :(得分:2)

如果你需要快速测试你的YAML,我建立了http://yaml-online-parser.appspot.com/。它帮助我写YAML,特别是在学习的时候。