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

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

 $dom = new DOMDocument('1.0', 'utf-8'); $dom->loadHTML($html); foreach($dom->getElementsByTagName('a') as $href) if($href->nodeValue == 'First') //delete 

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

Вы удаляете узел, указывая родительскому узлу на удаление дочернего элемента:

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

См. DOMNode::$parentNode Docs и DOMNode::removeChild() Docs .

См. Также:

  • Как удалить атрибуты с помощью PHP DOMDocument?
  • Как удалить элемент HTML с помощью класса DOMDocument

Без труда:

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

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

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

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

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