我有这个正则表达式匹配所有网址并且效果很好:
$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 a href&gt;
之间任何让它发挥作用的想法?
答案 0 :(得分:0)
一个好的起点是lib_autolink处理<a>
案例,可以很容易地适应<img>
案例。除非你能保证HTML完全有效(文本中没有杂散的引号等),否则在一个正则表达式中执行此操作可能是非常重要的,也许是不可能的。