105

Does anyone know of a good YAML Parser for PHP? If so, what are the pros and cons of this library?

4

7 回答 7

144

最后更新时间:2017 年 7 月 26 日

以下是 PHP 中 YAML 状态的总结:

  • C 库的包装器:如果您需要绝对速度,您可能会想要这些:
    • php-yaml : LibYAML的包装器。可作为 PECL 扩展使用;它也是PHP 文档中的一个。
    • syck : 绑定到 syck; 也可作为 PECL 扩展。(日期,见下文)

  • 纯 PHP 实现:

    • sfYaml : Symfony 的 YAML 组件。您可以在此处查看其作者的动机。他想要“易于使用、快速、经过单元测试并且有清晰的错误信息”的东西。
    • spyc:没有依赖项的 YAML 解析器

在撰写本文时,上述库的最新版本发布日期和它们支持的YAML 规范版本(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 
于 2010-09-11T16:17:03.080 回答
50

间谍:https ://github.com/mustangostang/spyc

纯PHP实现,无需对服务器进行任何修改即可安装。如果速度是一个可怕的问题,它可能不是理想的解决方案,但如果你使用 YAML 进行配置或相对低容量的使用,它是一个很棒的解决方案。

给定一个 YAML 文档,Spyc 将返回一个数组,您可以随意使用它。

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

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

$yaml_str = Spyc::YAMLDump($myarray);
于 2009-05-12T18:50:10.700 回答
16

The symfony framework makes very heavy use of YAML, this blog post by Grégoire Hubert demonstrates using their YAML library in a non-symfony project.

于 2008-11-16T21:37:43.527 回答
7

Symfony2 有一个 YAML 组件,它支持大部分YAML 1.2 规范

https://github.com/symfony/Yaml

于 2012-05-01T20:56:33.867 回答
3

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

  • yaml - LibYAML YAML 1.1 解析器库的包装器
  • syck - Syck YAML 1.0 解析器库的包装器
于 2010-01-25T20:50:31.417 回答
2

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

Symfony 和 Doctrine ORM 正在使用这个。

要获得它,您可以下载 Doctrine 1.2sfYamlvendor目录中提取。

让我们知道它是否适合您的需求。

于 2010-03-15T10:52:14.767 回答
2

如果您需要快速测试您的 YAML,我构建了:http: //yaml-online-parser.appspot.com/。它帮助我编写 YAML,尤其是在刚学习的时候。

于 2010-04-03T17:25:14.470 回答