【问题标题】:Need help mass finding/replacing portions of a text file需要帮助批量查找/替换文本文件的部分
【发布时间】:2013-06-21 16:15:00
【问题描述】:

我有一个相当独特的情况,我需要对 XML(或纯文本)文件进行大量编辑。在 XML 文件中,有几个图像引用,例如这个:

<image>
  <id>image1</id>
  <dateTaken>Sun Sep 9 10:57:31 GMT-0700 2012</dateTaken>
  <dateAdded>Mon Jun 24 17:44:50 GMT-0700 2013</dateAdded>
  <filename>0881DAF2-80EC-7A25-9CF3-BFD67F4EF764.jpg</filename>
</image>

我需要做的是取&lt;filename&gt;&lt;/filename&gt; 之间的文件名,并用它来替换&lt;id&gt;&lt;/id&gt; 之间的部分。例如在上面的例子中,我需要用 0881DAF2-80EC-7A25-9CF3-BFD67F4EF764.jpg 替换“image1”,所以它看起来像这样:

<image>
  <id>0881DAF2-80EC-7A25-9CF3-BFD67F4EF764.jpg</id>
  <dateTaken>Sun Sep 9 10:57:31 GMT-0700 2012</dateTaken>
  <dateAdded>Mon Jun 24 17:44:50 GMT-0700 2013</dateAdded>
  <filename>0881DAF2-80EC-7A25-9CF3-BFD67F4EF764.jpg</filename>
</image>

我需要在同一个文档中更改数百个这样的图像参考。使用 PHP 或其他方法,有没有一种快速的方法可以批量编辑文档并将 &lt;id&gt;&lt;/id&gt; 之间的每个 ID 替换为 &lt;filename&gt;&lt;/filename&gt; 之间的内容,在每个 &lt;image&gt; &lt;/image&gt;文档中的引用?非常感谢您提供任何可能的帮助!

【问题讨论】:

  • 使用许多可用于 PHP 的 XML 解析库之一。
  • 您有没有尝试自己解决这个问题?我们不是代码编写服务,我们在这里帮助您解决代码中的问题。但是你必须展示你迄今为止所做的尝试,并提出具体的问题。

标签: php text replace find edit


【解决方案1】:

假设您有此 xml 的根目录,您可以通过将 xml 加载为 $xml_string 来执行以下操作:

$xml = new SimpleXMLElement($xml_string);
foreach($xml->children() as $child){
$child->id = $child->filename;
}
$xml->asXml('updated.xml');

【讨论】:

    猜你喜欢
    • 2018-03-07
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多