Проблема в том, что когда вы используете
echo $dom->saveXML($node);
в цикле, он будет выводить для различных тегов, поэтому вывод будет не конечным результатом, а комбинацией других частей документа.
Попробуйте изменить его на
echo $node->nodeName."=>".$dom->saveXML($node).PHP_EOL;
, чтобы посмотреть, что он делает.
Вы можете просто удалить текущий echo
и добавить
echo $dom->saveXML();
после окончания цикла.
В качестве альтернативы, если вы просто хотите обработать теги <img>
, вы можете ограничить цикл более конкретно ...
$content = $dom->getElementsByTagName('img');
foreach ($content as $i => $node)
{
$img_src = $node->getAttribute('src');
$path_arr = explode('/', $img_src);
$filename = $path_arr[count($path_arr)-1]; // myface.jpg
$alt = 'blah';
$node->setAttribute('alt', $alt);
}
echo $dom->saveXML();