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.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...