Как удалить элемент с помощью DOMDocument?
Можно ли удалить элемент из загруженного DOM
без создания нового? Например, что-то вроде этого:
$dom = new DOMDocument('1.0', 'utf-8');
$dom->loadHTML($html);
foreach($dom->getElementsByTagName('a') as $href)
if($href->nodeValue == 'First')
//delete
28
3 answers
Вы удаляете узел, сообщая родительскому узлу удалить дочерний:
$href->parentNode->removeChild($href);
См. DOMNode::$parentNode
Документы и DOMNode::removeChild()
Документы.
Смотрите также:
76
Author: hakre, 2017-05-23 12:09:57
Легко:
$href->parentNode->removeChild($href);
16
Author: silkfire, 2013-03-07 13:43:18
Мне потребовалось некоторое время, чтобы понять это, поэтому вот некоторые пояснения:
Если вы удаляете элементы из цикла (как в примере операции), вам нужно выполнить цикл в обратном направлении
$elements = $completePage->getElementsByTagName('a');
for ($i = $elements->length; --$i >= 0; ) {
$href = $elements->item($i);
$href->parentNode->removeChild($href);
}
Документация по DOMNodeList: Вы можете изменять и даже удалять узлы из списка DOMNodeList, если выполните итерацию в обратном направлении
13
Author: alexanderbird, 2015-12-02 07:43:06