PHP YAML解析器


105

有谁知道一个很好的PHP YAML解析器?如果是这样,此库的优缺点是什么?


尝试“ spyc” lib spyc.sourceforge.net
Shreef

16
+1尽管没有建设性,但此页面对我非常有帮助
Erick Robertson 2014年

2
考虑到对这个问题的最高投票答案的质量,令人惊讶的是,这个问题被封闭为“非建设性的”。
dreftymac '16

我刚刚发布了BabyYaml的解析器,它是Yaml的简单表亲,如果您有兴趣的话,请在这里查看:github.com/lingtalfi/BabyYaml
ling

我必须同意ErickRobertson和dreftymac的观点,这从字面上很好地回答了我的问题,而关闭它又阻止了进一步的好的回答。
法老王工具

Answers:


139

最近更新:2017年7月26日

这是PHP中YAML状态的摘要:

  • 包装到C库:如果需要绝对的速度,您可能需要这些:
  • 纯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 

1
还有其他一些不太知名的库(比如这一次,从部落项目),但我并没有想太多深入探讨这些。
NullUserException's

3
我已经使用sfYaml大约两年了,在性能测试中,我意识到sfYaml :: parse()占用了大部分处理时间。我将其替换为php-yaml,现在应用程序速度提高了70%!那是巨大的区别。
Attila Fulop

1
PHP的2019年更新:“ spyc”有很多问题,而“ sfYaml”工作正常。
ViliusL '19

49

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

纯PHP实现,因此您无需对服务器进行任何修改即可进行安装。如果非常关心速度,它可能不是理想的解决方案,但是如果您使用YAML进行配置或使用量相对较小,则它是一个绝佳的解决方案。

给定一个YAML文档,Spyc将返回一个您可以使用的数组,但是您认为合适。

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

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

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

1
+1我只是想要一种快速简单的方法来在导入脚本中使用YAML。我的应用程序除了导入(甚至可能有一天导出)之外,不需要任何支持。我发现被列为“还另一个YAML解析器”的spyc是一键式解决方案。我将一个脚本放到脚本文件夹中,将其包含在内,并调用了一个方法。它没有比这更容易的了,现在我要重新工作-移除了路障。
埃里克·罗伯逊

1
过时且大量解析yaml文件不正确(某些数据丢失)。
ViliusL



3

如果您在项目中使用了很多YAML,则可能会发现纯PHP库(例如spyc或Symfony YAML)不够快。C YAML解析器至少有两个PHP绑定:

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


2

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

Symfony和Doctrine ORM正在使用这一版本。

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

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.