getElementsByTagName
возвращает объект DOMNodeList, содержащий все сопоставленные элементы. Таким образом, $ tag здесь DOMNodelist :: item и, следовательно, не может использоваться непосредственно в строковых операциях. Вам нужно получить nodeValue
. Измените код foreach следующим образом:
foreach($imageTags as $tag) {
$content = preg_replace("/<img[^>]+\>/i", "<a href=\"$tag->nodeValue\"><img src=\"$tag->nodeValue\" /></a>", $content);
}