【问题标题】:Modify yaml file with PHP script使用 PHP 脚本修改 yaml 文件
【发布时间】:2014-07-03 05:54:23
【问题描述】:

我有一个包含以下数据的 common.yml 文件:

main:
  shred:
    viral:
      image1:
        alt: Sunset
        src: 'http://i.imgur.com/nOptw.jpg'
      image2:
        alt: Fernie
        src: 'http://i.imgur.com/yfJaUoX.gif'

我正在尝试制作一个 php 脚本,它将“src”属性编辑为我从下载的新 json 文件中获得的新图像。问题是我如何编辑这两个图像的 src。我尝试使用 Symfony Yaml 组件 Dumper,但不知道如何使用它来更新文件的特定部分。

请帮忙.....

【问题讨论】:

  • 修改后是否清空缓存? php 应用程序/控制台缓存:清除 --env=prod php 应用程序/控制台缓存:清除 --env=dev
  • @ColourDalnet 它与更新 yml 文件有什么关系。我不明白你的评论。

标签: php symfony yaml


【解决方案1】:

正如你所说,你必须使用 Symfony Yaml 组件。

例如,您可以访问“src”数据:

$yaml = Yaml::parse(file_get_contents($this->container->get('kernel')->getRootDir() .'/config/common.yml'));

$srcData = $yaml['main']['schred']['viral']['image1']['src'];

在这里,您的数据是可访问的 = 'http://i.imgur.com/nOptw.jpg'。接下来您可以更改值并更新您的文件:

$yaml['main']['schred']['viral']['image1']['src'] = $yourNewValue;

$new_yaml = Yaml::dump($yaml, 5);

file_put_contents($this->container->get('kernel')->getRootDir() .'/config/common.yml', $new_yaml);

希望对你有帮助

【讨论】:

  • 非常感谢 Perroin Thibault 解决了我的问题。但是当我进行转储时有一个小问题,它会在文件中的一些其他属性周围添加引号。
  • 太棒了!你有你的问题的例子吗?很奇怪
  • 我的问题是我需要将所有评论保留在 yaml 文件中。有什么想法吗?
  • @digitaldonkey 以防万一有人想要同样的东西,我不会在文件中使用 cmets,而是总是使用像 config.example.yml 这样的文件来评论结构,我将其用作参考,永远不要在应用程序中解析它。
  • 你好,这是什么 $new_yaml = Yaml::dump($yaml, 5);请?
猜你喜欢
  • 2012-10-18
  • 1970-01-01
  • 2013-11-03
  • 1970-01-01
  • 1970-01-01
  • 2017-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多