Est-il possible de supprimer un élément du DOM
chargé sans en créer un nouveau? Par exemple quelque chose comme ça:
$dom = new DOMDocument('1.0', 'utf-8');
$dom->loadHTML($html);
foreach($dom->getElementsByTagName('a') as $href)
if($href->nodeValue == 'First')
//delete
Vous supprimez le nœud en disant au nœud parent de supprimer l'enfant:
$href->parentNode->removeChild($href);
Voir DOMNode::$parentNode
Documents et DOMNode::removeChild()
Documents .
Voir aussi:
Cela m'a pris un certain temps à comprendre, alors voici quelques éclaircissements:
Si vous supprimez des éléments d'une boucle (comme dans l'exemple de l'OP), vous devez boucler en arrière
$elements = $completePage->getElementsByTagName('a');
for ($i = $elements->length; --$i >= 0; ) {
$href = $elements->item($i);
$href->parentNode->removeChild($href);
}
documentation DOMNodeList : Vous pouvez modifier, et même supprimer, les nœuds d'une DOMNodeList si vous parcourez en arrière
Facilement:
$href->parentNode->removeChild($href);