如何解决正则表达式语法问题
|$pattern=\'`<a\\s+[^>]*(href=([\\\'\\\"]).*\\\\2)[^>]*>([^<]*)</a>`isU\';
我想更改([^<]*)
来搜索</a>
不仅是<
,因为<img>
标记可能位于<a>
标记内。
任何人都可以帮忙,我对正则表达式很不满意。
解决方法
将ѭ1更改为不匹配的比赛,所有ѭ7都可以解决问题
, 您可以使用PHP解析器执行此操作。我根本不会使用Regex。
你可以试试:
http://simplehtmldom.sourceforge.net/
虽然我认为PHP具有内置的DOM解析器。
,
([^<]*)
可以更改为((?:[^<]|<(?!/a>))*)
,它使用负数预读匹配非<
字符或不跟/a>
的<
字符。在这里查看实际操作。
但是,正如已经多次说明的那样,这不是解析HTML的好方法。首先,它效率极低,其次,如果您嵌套标签(例如<a><a></a></a>
),会发生什么?尽管使用超链接可能不会发生这种情况,但是在许多其他HTML元素中却很常见。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。