2012-04-09 116 views
1

我有這樣的正則表達式匹配所有URL和偉大工程:preg_replace_callback正則表達式匹配的所有URL,避免圖像

$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

第一否定=」 第二否定是當A HREF之間的HREF>

任何想法讓它工作?

+0

什麼是'(?!src =「|?!>)'?也許你想要'(?<!src =」)'。 – kirilloid 2012-04-09 16:21:00

回答

0

一個好的出發點是lib_autolink它處理<a>的情況下,可以很容易地適應<img>情況。它是不平凡的,也許是不可能的t除非你可以保證HTML是完全有效的(文本中沒有雜亂的引號等),否則在單個正則表達式中這樣做。