Ответ 1
Вы удаляете node, сообщая родительскому node, чтобы удалить дочерний элемент:
$href->parentNode->removeChild($href);
См. DOMNode::$parentNode
Документы и DOMNode::removeChild()
Документы.
Смотрите также:
Можно ли удалить элемент из загруженного DOM
без создания нового? Например, что-то вроде этого:
$dom = new DOMDocument('1.0', 'utf-8');
$dom->loadHTML($html);
foreach($dom->getElementsByTagName('a') as $href)
if($href->nodeValue == 'First')
//delete
Вы удаляете node, сообщая родительскому node, чтобы удалить дочерний элемент:
$href->parentNode->removeChild($href);
См. DOMNode::$parentNode
Документы и DOMNode::removeChild()
Документы.
Смотрите также:
Легко:
$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, если вы повторяете назад