Как заменить элемент в DOMDocument
$html = '<a href="/111/" class="elt zi2" title="Ston" target="_blank">Star</a>
текст
<a href="/3233/" class="elt zi2" title="Ston" target="_blank">Star</a>';
if($html) {
($dom = new DOMDocument)->loadHTML($html);
foreach ($dom->getElementsByTagName('a') as $el) {
$dom->replaceChild('2222222222222', $el);
}
print_r($html);
}
Перебираю ссылки в цикле, вопрос в том, как заменить ссылку скажем на текст?
Ответы (1 шт):
Автор решения: pgood
→ Ссылка
Для первого аргумента в replaceChild нужен объект DOMNode, для текста это будет DOMText, его можно создать методом createTextNode
<?php
$html = '<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body>
<a href="/111/" class="elt zi2" title="Ston" target="_blank">Star</a>
текст
<a href="/3233/" class="elt zi2" title="Ston" target="_blank">Star</a></body></html>';
if ($html) {
($dom = new DOMDocument)->loadHTML($html);
$xp = new DOMXPath($dom);
$ns = $xp->query('//a');
foreach ($ns as $el) {
$el->parentNode->replaceChild($dom->createTextNode('2222222222222'), $el);
}
print_r($dom->saveHTML());
}