微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我正在html页面上创建一个preg_replace.我的模式旨在为html中的某些单词添加周围标记.但是,有时我的正则表达式会修改html标记.例如,当我尝试替换此文本时:
<a href="example.com" alt="yasar home page">yasar</a>

因此,yasar读取< span class =“selected-word”> yasar< / span>,我的正则表达式也替换了锚标记的alt属性中的yasar.我正在使用的当前preg_replace()看起来像这样:

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

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

你可以使用断言,因为你必须确保搜索的单词出现在>之后,或者在任何<之前.后一个测试更容易实现,因为前瞻断言可以是可变长度:
/(asf|foo|barr)(?=[^>]*(<|$))/

有关该断言语法的一个很好的解释,另请参见http://www.regular-expressions.info/lookaround.html.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐