Cette question répond à un problème courant lorsque vous travaillez avec DOMDocument : l'extraction de contenu HTML sans les balises HTML, corps et paragraphe englobantes. Le problème survient lorsque saveXML() ajoute ces wrappers à la sortie. Bien que le correctif suggéré utilisant saveXML() sur le premier élément de paragraphe ne fonctionne que pour le contenu sans éléments de niveau bloc, cet article explore une solution complète.
La clé pour résoudre ce problème réside dans l'introduction de l'option $. paramètre dans loadHTML() dans PHP 5.4 et Libxml 2.6. En utilisant les options suivantes :
$html->loadHTML($content, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
nous pouvons demander à Libxml de ne pas ajouter automatiquement d'éléments HTML et body implicites ou un doctype par défaut. Par conséquent, saveHTML() affichera le contenu sans ces wrappers.
LIBXML_HTML_NOIMPLIED désactive l'ajout automatique d'éléments HTML/body implicites, tandis que LIBXML_HTML_NODEFDTD empêche l'ajout d'un doctype par défaut s'il n'en trouve pas dans l'entrée.
En incorporant ces options, nous pouvons extraire efficacement le contenu HTML souhaité sans wrappers indésirables, garantissant ainsi une image plus précise. représentation du contenu du DOMDocument.
Il est important de noter que loadHTML() nécessite Libxml 2.6, alors que LIBXML_HTML_NODEFDTD n'est disponible que dans Libxml 2.7.8 et LIBXML_HTML_NOIMPLIED est disponible dans Libxml 2.7.7. Pour une compréhension complète des paramètres Libxml, reportez-vous à la documentation officielle.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!