Подтвердить что ты не робот

Как удалить элемент с помощью DOMDocument?

Можно ли удалить элемент из загруженного DOM без создания нового? Например, что-то вроде этого:

$dom = new DOMDocument('1.0', 'utf-8');
$dom->loadHTML($html);

foreach($dom->getElementsByTagName('a') as $href)
    if($href->nodeValue == 'First')
        //delete
4b9b3361

Ответ 2

Легко:

$href->parentNode->removeChild($href);

Ответ 3

Мне потребовалось некоторое время, чтобы выяснить, так что здесь некоторые пояснения:

Если вы удаляете элементы из цикла (как в примере OP), вам нужно выполнить обратный путь

$elements = $completePage->getElementsByTagName('a');
for ($i = $elements->length; --$i >= 0; ) {
  $href = $elements->item($i);
  $href->parentNode->removeChild($href);
}

Документация DOMNodeList: вы можете изменять и удалять узлы из DOMNodeList, если вы повторяете назад