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

PHP正则表达式匹配HTML标记之外的关键字

我一直在尝试使用正则表达式匹配并替换HTML的一部分上的关键字的出现:

>我想匹配关键字和< strong>关键字< / strong>
>但是< a href =“someurl.html”target =“_ blank”> keyword< / a>和< a href =“someur2.html”>已经链接的关键字< / a>不应该匹配

我只对匹配(和替换)第一行的关键字感兴趣.

我想要这个的原因是用< a href =“dictionary.PHP?k = keyword”> keyword< / s>替换关键字,但仅当关键字不在< a>内时.标签.

任何帮助都感激不尽!

解决方法:

$str = preg_replace('~Moses(?!(?>[^<]*(?:<(?!/?a\b)[^<]*)*)</a>)~i',
                    '<a href="novo-mega-link.PHP">$0</a>', $str);

否定前瞻中的表达式与下一个结束时间相匹配< / a>标记,但仅当它没有看到开头< a>先标记.如果成功,则意味着Moses一词位于一个锚元素中,因此前瞻失败,并且不会发生匹配.

这是一个demo.

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

相关推荐