"、 "<"、 "&"字符的正则表达式-6ren"> "、 "<"、 "&"字符的正则表达式-我正在尝试使用 PHP 中的 PCRE 库编写正则表达式。 我需要一个正则表达式来匹配 & , >和 This string contains > and 想法是搜索并替换这些字符并将它们转-6ren">
gpt4 book ai didi

php - 匹配出现在 XML 节点内的 ">"、 "<"、 "&"字符的正则表达式

转载 作者:可可西里 更新时间:2023-10-31 22:49:46 24 4
gpt4 key购买 nike

我正在尝试使用 PHP 中的 PCRE 库编写正则表达式。

我需要一个正则表达式来匹配 & , ><存在于任何 XML 节点的字符串部分中的字符,而不是标记声明本身。

输入 XML:

<pnode>
<cnode>This string contains > and < and & chars.</cnode>
</pnode>

想法是搜索并替换这些字符并将它们转换为 XML 实体等价物。

如果我要将整个 XML 转换为实体,XML 将如下所示:

整个 XML 转换为实体

&lt;pnode&gt;
&lt;cnode&gt;This string contains &gt; and &lt; and &amp; chars.&lt;/cnode&gt;
&lt;/pnode&gt;

我需要它看起来像这样:

正确的 XML

<pnode>
<cnode>This string contains &gt; and &lt and &amp; chars.</cnode>
</pnode>

我已经尝试使用 look-ahaead 编写一个正则表达式来匹配这些字符,但我对它的了解还不够多。我的尝试(目前只尝试匹配 > 符号):

/>(?=[^<]*<)/g

只是为了说明我要修复的 XML 来自第三方,他们似乎无法最终修复它,因此我尝试修复它。

最佳答案

最后我选择使用 Tidy PHP 中的库。我使用的代码如下所示:

  // Specify configuration
$config = array(
'input-xml' => true,
'show-warnings' => false,
'numeric-entities' => true,
'output-xml' => true);

$tidy = new tidy();
$tidy->parseFile('feed.xml', $config, 'latin1');
$tidy->cleanRepair()

这可以完美地纠正所有编码错误并将无效字符转换为 XML 实体。

关于php - 匹配出现在 XML 节点内的 ">"、 "<"、 "&"字符的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2282614/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com