我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

苏南大叔需要使用php对yaml/yml文件进行处理,所以在服务器上面,装了phpyaml扩展。在本篇文章中,苏南大叔要实现的需求,就是解析yaml文档。

苏南大叔:php 如何解析 yaml 格式内容? - php-yaml
php 如何解析 yaml 格式内容?(图2-1)

本文测试环境:centos/php72。安装yml的服务器端扩展的过程,如下:

待处理文档

我们假设有这样一个名为yml.yml文档,放置于苏南大叔的博客域名下。

event1:
  name: My Event
  date: 2017-11-11

苏南大叔:php 如何解析 yaml 格式内容? - yaml范例
php 如何解析 yaml 格式内容?(图2-2)

根据 http://doc.php.sh/zh/ref.yaml.html 这里的说明,parse函数一共有三个,并且这三个函数都各有四个参数。在本篇文章中,我们只考虑其第一个参数。后续三个参数的使用,我们以后另外说明。返回值是个mixed,不过,苏南大叔理解着,通常意义上来说,应该就是个array类型。

通过字符串方式处理

这个是三个系列函数中最基础的函数,使用起来也比较简单。具体说明见这里:

$yaml = <<<YAML
event1:
  name: My Event
  date: 2017-11-11    
YAML;
$data = yaml_parse($yaml);
print_r($data);

我们得到了这样一个返回值:

Array
(
    [event1] => Array
        (
            [name] => My Event
            [date] => 2017-11-11
        )

)

通过url方式处理

php函数为:yaml_parse_url,说明文档见这里:

当然我们这里还是仅仅探讨最简单最常见的使用情况,根据文档说明,这个函数的使用姿势可能是这样的:

$obj=yaml_parse_url("https://newsn.net/yml.yml");
print_r($obj);

然后我们应该可以得到一个array,但是苏南大叔在试验这个函数的时候,恒定返回false,更换了很多其他人的yml地址,也都是false。根据文档说明,返回false的话,就是说“失败了"。可能是苏南大叔的服务器限制的问题,不允许这个yaml的扩展访问网络。目前,暂无解决方案。大家如果有知道,如何处理的,欢迎给苏南大叔留言。谢谢。(当然,这个测试文件yml.yml,在大家访问的时候,可能已经删除了。)

不过,我们可以根据已有的函数,做个变通,就得到了我们期望的结果。变通如下:

//$obj=yaml_parse_url("https://newsn.net/yml.yml");
$obj=yaml_parse(file_get_contents("https://newsn.net/yml.yml"));
print_r($obj);

我们利用 yaml_parsefile_get_contents 的组合,获得了 yaml_parse_url 的效果。

通过文件方式处理

函数为:yaml_parse_file,这个函数使用起来也非常简单。说明文档见这里:

$obj=yaml_parse_file("yml.yml");
print_r($obj);

这个函数也可以得到苏南大叔想要的数据。

总结

yamlyml是同一种文件,和xml类似。yml文档相对于xml文档,易读性更高。但是应用场景上来说,却是少很多。普及性相对较差。更多有关yml的开发经验,请阅读苏南大叔的精彩好文。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   php    yaml