$pattern='`<a\s+[^>]*(href=([\'\"]).*\\2)[^>]*>([^<]*)</a>`isU';
我想更改([^<]*)
这个来搜索</a>
,不仅<
因为<img>
标记可能在<a>
标记内。
任何人都可以帮忙,我在正则表达式上很糟糕。
答案 0 :(得分:2)
答案 1 :(得分:1)
将([^<]*)
更改为不匹配的所有(.*?)
匹配可能会解决问题
答案 2 :(得分:0)
([^<]*)
可以更改为((?:[^<]|<(?!/a>))*)
,其使用否定前瞻来匹配非<
个字符或<
个字符,而这些字符后面没有/a>
。在行动here中查看。
HOWEVER ,正如已经多次说过的那样,这不是解析HTML的好方法。首先,它的效率非常低,其次,如果你有嵌套标签会发生什么,例如<a><a></a></a>
?虽然超链接可能不会发生这种情况,但它在许多其他HTML元素中很常见。