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

时间:2012-04-09 15:42:57

标签: php regex

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

$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;

之间

任何让它发挥作用的想法?

1 个答案:

答案 0 :(得分:0)

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