【发布时间】:2016-04-20 21:44:08
【问题描述】:
长标题:)
无论如何,我有许多 XML 文件希望即时清理,使用 PHP preg_replace RegEx 输出进行简单的即时转换。
现在我不能使更改永久化,所以我编写了一个 php 函数来遍历文件。
我无法修复的是 RegEx 模式。
https://regex101.com/r/bN5eF4/7
我要匹配:
<all-tags with-their="attribute"
even-if-there="are-more">
and all the content between the start and end tag
even if there
are line breaks
in between them
</all-tags>
我敢打赌这很简单,但我从来没有很好地处理过 RegEx……很遗憾。
已编辑
似乎人们希望我构建一个 SimpleXML 的解析器函数,该函数通过 xml 文件并删除换行符?
在同一过程中,我想删除一些元素及其内容,具体取决于其属性中所说的内容。 分析可以这么说。
我认为在使用 Xsltprocessor 处理 xml 文件之前进行换行和分析会是更快的选择?
【问题讨论】:
-
不要用正则表达式解析 XML;使用真正的 XML 解析器。
-
为此,RegEx 要快得多,因为我将它作为字符串加载,然后只想删除标签内和标签之间的换行符。
-
检测您何时在标签内和标签之间不是正则表达式的工作。
-
那有更好的建议吗?
-
见How do you parse and process HTML/XML in PHP?。如果您的尝试失败,请显示minimal reproducible example,您将获得大量帮助。
标签: php regex xml tags preg-replace