Стандартное клише Stackoverflow для этих вопросов заключается в том, что вы должны использовать анализатор DOM.Что на самом деле правильно, но не вполне выполнимо (производительность) для манипулирования выводом.
Чтобы выполнить то, что вы хотите, вы можете попробовать:
$html = preg_replace_callback(
'#(<img\s[^>]*src)="([^"]+)"#',
"callback_img", $html);
Затем определить обратный вызов, например:
function callback_img($match) {
list(, $img, $src) = $match;
return "$img=\"placeholder\" data-href=\"$src\" ";
}
Обратите внимание, что это регулярное выражение работает только в том случае, если все ваши ссылки на изображения следуют этой схеме последовательно (все они должны использовать двойные кавычки, например).