2010-12-06 44 views
0

我有下面的代碼(PHP),它將匹配IMG-src和新的網址PHP正則表達式的preg_replace

$rep = array('/', '+', '(', ')'); 
$with = array('\/', '\+', '\(', '\)'); 

$match_pattern = '/<img[^<]*src\s*=\s*\"'.str_replace($rep, $with, $source_url).'\"[^>]*>/iUu'; 
$img_replace_str = '<img src="'.$new_url.'" />'; 
$post_content = preg_replace($match_pattern, $img_replace_str, $post_content); 

替換對於已經SRC爲「http://www.example.com/圖片a.jpg「,沒有問題,但對於包含查詢字符串如」http://www.example.com/b.jpg?height=900「的src圖像,它不匹配

我想要匹配具有和不具有查詢字符串的圖像。

+0

不知道答案,你可能會發現array_quote(http://php.net/manual/ en/function.preg-quote.php)將爲您節省那些查找和替換.. – Haroldo 2010-12-06 12:04:09

回答

2

您可以使用PHP的preg_quote()-function而不是str_replace()。它會自動轉義所有正則表達式特殊字符(請參閱文檔)。這應該解決的問題,因爲你的str_replace() - 溶液也沒有逃脫?,這是一個特殊字符在正則表達式:

$match_pattern = '/<img[^<]*src\s*=\s*\"'.preg_quote($source_url, '/').'\"[^>]*>/iUu';