我有一个使用单词边界的正则表达式,效果非常好......
~\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>">Aqua</span>
我对strip_tags的使用没有解决问题;我认为我需要的是一个更好的正则表达式,它根本不匹配以 blue">
结尾的内容(在这种情况下,'blue'是我正在比较的数组中任何其他颜色的占位符反对)。
任何人都可以将我需要的东西附加到正则表达式中吗?或者你有更好的解决方案吗?
答案 0 :(得分:3)
一般解决方案是
<[^>]*>(*SKIP)(*F)|blue
这是demo
简单地跳过<>
个代码中的所有内容。
标签之间的内容(例如蓝色)匹配,这听起来像是符合您的需求。
在表达式中,将“blue”替换为您喜欢的内容。
参考
答案 1 :(得分:1)
正则表达式取代通常看起来像解决方案,但它们可能有很多不良副作用,并没有真正实现你想要的。查看DOMDocument模型(正如一些评论者建议的那样)。
但如果你坚持使用正则表达式,那么here's就是一个很好的帖子。它使用两遍来完成你想要的。