2010-12-06 2 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 ", нет никаких проблем, но для изображений, содержащих src, который содержит строку запроса, например" http://www.example.com/b.jpg?height=900 ", это не соответствует

Я хочу для сопоставления изображений с строкой запроса и без него.

+0

не ответ, но вы можете найти array_quote (http://php.net/manual/ ru/function.preg-quote.php) спасет вас от поиска и замены. – Haroldo

ответ

2

Вы можете использовать PHP preg_quote()-function вместо str_replace(). Он автоматически ускользает от всех специальных символов регулярного выражения (см. Документы). Это должно решить эту проблему, так как ваш str_replace() -решение не ускользнуло ?, который представляет собой специальный символ в регулярных выражениях:

$match_pattern = '/<img[^<]*src\s*=\s*\"'.preg_quote($source_url, '/').'\"[^>]*>/iUu'; 
Смежные вопросы