Existe-t-il un moyen de supprimer un élément HTML en utilisant la classe DOMDocument
?
Réponses
Trop de publicités?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() ?
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)