2010-12-06 9 views
0

私はコード(PHP)を以下している、それはIMG SRC-にマッチし、新しいURLをhttp://www.example.com/」として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); 

を交換しますa.jpg "は問題ありませんが、srcがあり、" http://www.example.com/b.jpg?height=900 "などのクエリ文字列を含む画像の場合、一致しません。

クエリ文字列の有無にかかわらず画像を一致させることができます。

+0

ない答えをしかし、あなたはarray_quote(http://php.net/manual/を見つけることができますen/function.preg-quote.php)を使用すると、それらを見つけて置き換えることができます。 – Haroldo

答えて

2

str_replace()の代わりにPHPのpreg_quote()-functionを使用できます。すべての正規表現の特殊文字を自動的にエスケープします(ドキュメントを参照)。あなたのstr_replace() - 溶液は、正規表現での特殊文字である?、エスケープしていなかったので、それは、問題を解決する必要があります:

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