php 正则匹配HTML标签以外的匹配词 并且不匹配A标签中的匹配词

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 正则匹配HTML标签以外的匹配词 并且不匹配A标签中的匹配词相关的知识,希望对你有一定的参考价值。

例如:
<p>沙发1号<a href="#" alt="沙发2号">沙发3号</a></p>
我想匹配 沙发 这个词语并替换掉,但只要替换 沙发1号 ,其余的不要被匹配替换 有哪位高手能写出个简短效率的正则来,不胜感激!

那就第一步 去掉a preg_replace('/<a[^>]*>.*?</a>/','',$html);

第二部 去掉所有标签 strip_tags( $html)
参考技术A pattern : "#(<((?!a\b)[^>]*?>|(?!a)>)[^<]*?)(沙发)([^>]*?)#"

replace : '$1haha$4'

haha : 你想要替换的内容
参考技术B preg_replace('/<p>(.*?)<a/', '<p><a', $str);追问

这只是一个例子 我希望能排除所有的HTML标签及A标签,就是所匹配的关键词不能在标签属性中,例如 也不能在关键词中。

以上是关于php 正则匹配HTML标签以外的匹配词 并且不匹配A标签中的匹配词的主要内容,如果未能解决你的问题,请参考以下文章

php正则表达式匹配html标签之外

正则匹配连续多个P标签

Java String正则匹配大小写问题

php 正则匹配出a标签级a标签中的内容

Oracle 正则 整词匹配  不行

初识正则表达式二