<?php
$content = <<<EOD
<p>Lorem <a href="#">ipsum</a> dolor sit amet, consectetur adipisicing elit. Explicabo porro illum nesciunt. <a href="#">Voluptatem</a>, blanditiis esse, quod <a href="#">expedita</a> repellendus consequuntur dolore pariatur dicta tempora facere sint labore at magnam, rem assumenda.</p>
<p>Commodi, expedita? <a href="#">Accusantium reiciendis</a> in voluptatem veniam ullam! Et, porro architecto in dicta maxime blanditiis iusto, totam quis rerum voluptas numquam vero doloremque! Itaque impedit eligendi dignissimos, et <a href="#">veritatis eius</a>.</p>
EOD;
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->loadHTML($content);
$xpath = new DOMXPath($dom);
$elements = $xpath->query('//a');
$content = '';
foreach($elements as $element) {
if ($element->nodeName === 'a') {
if ($element->hasAttribute('href')) {
$href = $element->getAttribute('href'); // получаем ссылку
$includes = $element->childNodes; // получаем содержимое ссылки (внутри могут быть HTML-теги)
// И меняю текущий элемент на новый (как текст)
$element = '<a href="' . $href . '">' . $includes . '</a>';
}
$content .= $dom->saveHTML($element);
continue;
}
else { $content .= $dom->saveHTML($element); }
}
$element = '<a href="' . $href . '">' . $includes . '</a>';
в переменной $includes у вас DOMNodeList, который "could not be converted to string"$newElement = $dom->createTextNode('<a href="' . $href . '"></a>');
$element->parentNode->replaceChild($newElement, $element);