PHP YAML 解析器

发布于 2024-07-08 07:20:58 字数 52 浏览 11 评论 0原文

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

肥爪爪 2024-07-15 07:20:58

最后更新:2017 年 7 月 26 日

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

  • C 库的包装器:如果您需要纯粹的速度,您可能会需要这些:
    • php-yamlLibYAML。 可作为 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 

Last updated: July 26th, 2017

Here's a summary of the state of YAML in PHP:

  • Wrappers to C libraries: You'll probably want these if you need sheer speed:
    • php-yaml: Wrapper for LibYAML. Available as a PECL extension; it is also the one on PHP's docs.
    • syck: Binding to syck; also available as a PECL extension. (dated, see below)
  • Pure PHP implementations:

    • sfYaml: Symfony's YAML component. You can see its authors' motivations here. He wanted something that was "easy to use, fast, unit tested and had clear error messages."
    • spyc: YAML parser without dependencies

At the time of this writing, the latest versions release dates for the aforementioned libraries and the versions of the YAML spec (1.2 is the latest version) they support are:

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 
星星的轨迹 2024-07-15 07:20:58

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);

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

Pure PHP implementation, so you don't need to make any modifications to the server for installation. If speed is of dire concern, it might not be the ideal solution, but if you're using YAML for configurations or relatively low-volume use, it is a fantastic solution.

Given a YAML document, Spyc will return an array that you can use however you see fit.

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

Given an array, Spyc will return a string which contains a YAML document built from your data.

$yaml_str = Spyc::YAMLDump($myarray);
情绪 2024-07-15 07:20:58

symfony 框架 大量使用了 YAML,这个 Grégoire Hubert 的博客文章演示了在非 symfony 项目中使用他们的 YAML 库。

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.

如果没结果 2024-07-15 07:20:58

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

https://github.com /symfony/Yaml

Symfony2 has a YAML component which supports most of the YAML 1.2 spec

https://github.com/symfony/Yaml

你对谁都笑 2024-07-15 07:20:58

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

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

If you're using a lot of YAML in your project you may find that the pure PHP libraries like spyc or Symfony YAML are not fast enough. There are at least two PHP bindings for C YAML parsers:

  • yaml - a wrapper for the LibYAML YAML 1.1 parser library
  • syck - a wrapper for the Syck YAML 1.0 parser library
标点 2024-07-15 07:20:58

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

Symfony 和 Doctrine ORM 正在使用这个。

要获取它,您可以下载 Doctrine 1.2 并从中提取 sfYaml vendor 目录。

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

Try sfYaml, it is the best I know.

Symfony and Doctrine ORM are using this one.

To get it, you may Download Doctrine 1.2 and extract sfYaml from vendor directory.

Let us know if it suits your needs.

同尘 2024-07-15 07:20:58

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

If you need to test your YAML quickly, I built: http://yaml-online-parser.appspot.com/ . It helps me write YAML, especially while just learning.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文