заменяя все теги src изображения в тексте HTML

Я пытаюсь сделать простой скрипт php, чтобы найти все атрибуты src из всех изображений в html-тексте, а затем заменить все найденные srcs на некоторый текст после внесения некоторых условных изменений.

Что-то вроде этого:

@preg_match_all('/<img\s src="([a-zA-Z0-9\.;:\/\?&=_|\r|\n]{1,})"/isxmU', $body, $images); 

теперь у меня все srcs в переменной $ images, теперь я делаю:

 foreach ($images as $img) { ..my changes here.. } 

и теперь … как я могу восстановить измененные srcs в переменную $ body снова?

Спасибо заранее,

Вместо этого используйте парсер HTML DOM, гораздо проще в использовании и обслуживании http://simplehtmldom.sourceforge.net/

Вы должны заглянуть в preg_replace_callback() , который позволит вам выполнить постобработку каждого матча, как вам нравится, используя функцию обратного вызова. (Вы бы использовали его вместо preg_match_all() , а не в дополнение к нему.)

Вчера я задал вопрос о хорошем интерфейсе для изменения и перемещения файлов HTML. Вам может быть интересно:

Порт jQuery для PHP

Это может быть хорошей альтернативой, если вы уже знакомы с API jQuery.

Недействительный синтаксический анализатор может быть еще лучше, если вам нужно работать с плохо сформированным HTML.

http://pear.php.net/package/XML_HTMLSax3

Я думаю, что самый простой ответ, который вы ищете, – это сделать str_replace.

 foreach ($images as $img) { ..my changes here.. $body = str_replace($original_string, $modified_string, $output_body); } 

Не хотите, чтобы вы использовали preg_replace ? С помощью модификатора e текст замены имеет значение eval 'd, поэтому вы можете иметь функцию, которая выполняет на заменяемом тексте ту же самую вещь, которую вы бы сделали в вашем цикле foreach .

EDIT: preg_replace_callback чище, чем с помощью e модификатора с preg_replace , не думал об этом при написании моего anser, поэтому лучше ответить на хаос.