1

我有这个正则表达式来匹配所有网址并且效果很好:

$regex ='@((https?://)([-\w]+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.\,]*(\?\S+)?)?)*)@';                           
return preg_replace_callback( $regex, 'replacing' , $content );

我需要避免在 : 中匹配 url,src="***"<a href="">***</>希望保留文本但替换 url。

我试过:在我的正则表达式中添加否定:

$regex ='@((?!src="|?!>)(https?://)([-\w]+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.\,]*(\?\S+)?)?)*)@';

当 url 以 src=" 开头时的第一个否定第二个否定是在 a href a href >

有什么想法让它发挥作用吗?

4

1 回答 1

0

lib_autolink是一个很好的起点,它处理这种<a>情况并且可以很容易地适应这种<img>情况。除非您可以保证 HTML 完全有效(文本中没有杂散的引号等),否则在单个正则表达式中执行此操作并非易事,而且可能是不可能的。

于 2012-04-09T16:25:43.750 回答