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

苏南大叔需要使用php,对yaml(yml)进行处理,所以在服务器上面,装了php的yaml扩展,见这里:https://newsn.net/say/centos-php-pecl-yaml.html 。在本篇文章中,苏南大叔要实现的需求,就是解析yaml文档。下面进入正题。

待处理文档

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

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

php的yaml解析函数 - yml_001

php的yaml解析函数(图1-1)

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

通过字符串方式处理

这个是三个系列函数中最基础的函数,具体说明见这里:https://doc.php.sh/zh/function.yaml-parse.html 。使用起来也比较简单。

$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,说明文档见这里:https://doc.php.sh/zh/function.yaml-parse-url.html 。当然我们这里还是仅仅探讨最简单最常见的使用情况。
根据文档说明,这个函数的使用姿势可能是这样的:

$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,说明文档见这里 https://doc.php.sh/zh/function.yaml-parse-file.html 。这个函数使用起来也非常简单。

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

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

总结

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

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

欢迎转载传播本篇原创文章,转载请保留链接及作者信息。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。