一尘不染

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

php

我在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()我正在使用的外观如下:

preg_replace("/(asf|gfd|oyws)/", '<span class=something>${1}</span>',$target);

如何制作正则表达式,使其与html标记内的任何内容都不匹配?


阅读 637

收藏
2020-05-26

共1个答案

一尘不染

您可以为此使用断言,因为您只需要确保搜索到的单词出现在>或之后,就可以了<。由于前瞻性断言可以是可变长度的,因此后一种测试更容易实现:

/(asf|foo|barr)(?=[^>]*(<|$))/
2020-05-26