11 votes

Comment supprimer un élément HTML en utilisant la classe DOMDocument

Existe-t-il un moyen de supprimer un élément HTML en utilisant la classe DOMDocument ?

22voto

RafaSashi Points 1492

En plus de la réponse de Dave Morgan, vous pouvez utiliser DOMNode::removeChild pour supprimer un enfant de la liste des enfants :

Supprimer un enfant par nom de balise

//L'exemple suivant supprimera l'élément de tableau d'un contenu HTML.

$dom = new DOMDocument();

//éviter les espaces blancs après avoir supprimé le nœud
$dom->preserveWhiteSpace = false;

//analyser les éléments du DOM html
$dom->loadHTML($html_contents);

//obtenir le tableau du DOM
if($table = $dom->getElementsByTagName('table')->item(0)) {

   //supprimer le nœud en demandant au nœud parent de supprimer l'enfant
   $table->parentNode->removeChild($table);

   //enregistrer le nouveau document
   echo $dom->saveHTML();

}

Supprimer un enfant par nom de classe

//même début
$dom = new DOMDocument();
$dom->preserveWhiteSpace = false;
$dom->loadHTML($html_contents);

//utilisez DomXPath pour trouver l'élément de tableau avec votre nom de classe
$xpath = new DomXPath($dom);
$classname='MonNomDeClasse';
$xpath_results = $xpath->query("//table[contains(@class, '$classname')]");

//obtenir le premier tableau des résultats XPath
if($table = $xpath_results->item(0)){

    //supprimer le nœud de la même manière
    $table ->parentNode->removeChild($table);

    echo $dom->saveHTML();
}   

Ressources

https://www.php.net/manual/en/domnode.removechild.php

Comment supprimer un élément avec DOMDocument ?

Comment obtenir le HTML complet à partir de la méthode DOMXPath::query() ?

13voto

Dave Morgan Points 627

https://www.php.net/manual/fr/domnode.removechild.php

DomDocument est un DomNode.. Vous pouvez simplement appeler removeChild et vous devriez être bon.

ÉDITER: Je viens de remarquer que vous parliez probablement de la page sur laquelle vous travaillez actuellement. Je ne sais pas si DomDocument fonctionnerait. Vous voudrez peut-être envisager d'utiliser JavaScript à ce moment-là (s'il a déjà été envoyé au client)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X