preg_replace_callback正则表达式匹配所有网址并避免使用图像


preg_replace_callback regex match all urls and avoid images

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

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

我需要避免在里面匹配网址:src="***"<a href="">***</>想保留文本但替换网址。

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

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

当 url 以 src= 开头时的第一个否定"第二个否定是当 href 和 href 之间>

有什么想法可以让它工作吗?

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