我在html页面上制作了preg_replace。我的模式旨在为html中的某些单词添加周围的标记。但是,有时我的正则表达式会修改html标签。例如,当我尝试替换此文本时:
<a href="example.com" alt="yasar home page">yasar</a>
这样yasar读<span class="selected- word">yasar</span>,我的正则表达式也锚标记的alt属性取代亚萨尔。当前preg_replace()我正在使用的外观如下:
yasar
<span class="selected- word">yasar</span>
preg_replace()
preg_replace("/(asf|gfd|oyws)/", '<span class=something>${1}</span>',$target);
如何制作正则表达式,使其与html标记内的任何内容都不匹配?
您可以为此使用断言,因为您只需要确保搜索到的单词出现在>或之后,就可以了<。由于前瞻性断言可以是可变长度的,因此后一种测试更容易实现:
>
<
/(asf|foo|barr)(?=[^>]*(<|$))/