为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

一只斗牛犬 2019-09-03 19:17:03
我正在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标签内的任何内容都不匹配?
查看完整描述

3 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

Yasar,恢复了这个问题,因为它有另一个未提及的解决方案。


此解决方案不会仅检查下一个标记字符是否为开始标记,而是跳过所有标记<full tags>。


有关使用正则表达式解析html的所有免责声明,这里是正则表达式:


<[^>]*>(*SKIP)(*F)|word1|word2|word3

这是一个演示。在代码中,它看起来像这样:


$target = "word1 <a skip this word2 >word2 again</a> word3";

$regex = "~<[^>]*>(*SKIP)(*F)|word1|word2|word3~";

$repl= '<span class="">\0</span>';

$new=preg_replace($regex,$repl,$target);

echo htmlentities($new);


查看完整回答
反对 回复 2019-09-03
  • 3 回答
  • 0 关注
  • 997 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信