Использование PHP preg_replace для замены значения между двумя строками

У меня есть скрипт, который загружает HTML-код на мою веб-страницу в виде таблицы. Я хотел бы заменить часть URL-адреса, содержащегося в HTML, с помощью PHP preg_replace. URL-адрес содержит некоторый текст, который всегда отличается. URL-адрес не уникален на веб-странице, но тот, который я хочу заменить, появляется ТОЛЬКО перед определенным изображением.

Моя (нерабочая, смехотворная и, вероятно, совершенно неправильная) попытка выглядит следующим образом:

$result = preg_replace( '/\http://www.mysite.com/script.php?&variable=1.*\<img src="http://www.mysite.com/images/image.gif"', 'http://www.mysite.com/script.php?.*\<img src="http://www.mysite.com/images/image.gif"', $result );

В приведенном выше примере делается попытка удалить &variable=1 из одного URL-адреса на странице. URL-адрес появляется на странице много раз, но только один раз непосредственно перед image.gif. Часть URL-адреса, которая всегда отличается, представлена ​​.*\ для соответствия чему угодно.

Кто-нибудь может привести рабочий пример? Спасибо!


person Matt    schedule 29.03.2011    source источник


Ответы (1)


Я думаю, что вы довольно близко, но вы забыли несколько технических вещей, таких как использование разделителей вокруг регулярного выражения ('|' в примере ниже) и использование ссылок ($1 и $2 ниже). Если приведенный ниже код не работает, опубликуйте пример текста, который вы пытаетесь сопоставить.

 $result = preg_replace('|http://www.mysite.com/script.php\?([^"]*)&variable=1([^<]*)<img src="http://www.mysite.com/images/image.gif"|', 'http://www.mysite.com/script.php?$1$2<img src="http://www.mysite.com/images/image.gif"', $result );
person Mike C    schedule 29.03.2011