【发布时间】:2013-06-17 06:13:11
【问题描述】:
我有一个使用单词边界的正则表达式,效果非常好......
~\b('.$value.')\b~i
...保存它与 HTML 标记中的文本相匹配的事实(即 title="This is blue!")。这是一个问题,因为我正在对正则表达式匹配的任何内容进行文本替换,然后使用那些 title 标记显示工具提示。因此,正如您可以想象的那样,它替换了标题中的文本并破坏了工具提示的 HTML。例如,应该是:
<span class="blue" title="This is blue!">Aqua</span>
...最终变成...
<span class="blue" title="This is <span class=" blue"="">Royal Blue</span>"&gt;Aqua</span>
我使用 strip_tags 并没有解决问题;我认为我需要的是一个更好的正则表达式,它根本不会匹配以 blue"> 结尾的内容(在这种情况下,“蓝色”是我正在比较的数组中任何其他颜色的占位符)。
任何人都可以将我需要的内容附加到正则表达式吗?或者您有更好的解决方案?
【问题讨论】:
-
更好的解决方案是使用 DOM 解析器而不是正则表达式来解析和更改 HTML 文本。
-
你看过DOMDocument吗?我建议阅读一些示例并尝试解决。
-
正如@anubhava 建议的那样,您可以在这里查看:developer.mozilla.org/en-US/docs/Web/API/DOMParser
-
无论如何......替换后你想要的结果应该是什么?
标签: php html regex recursion word-boundary