Comment enregistrer le HTML d'un DOMDocument sans omettre les éléments de niveau bloc
Le problème survient lors de la tentative d'enregistrement du contenu d'un DOMDocument au format HTML sans inclure les wrappers de balises HTML, body et p par défaut. La solution suggérée consistant à utiliser saveXML($d->getElementsByTagName('p')->item(0)) ne fonctionne que lorsque le contenu manque d'éléments de niveau bloc.
Le problème avec le Approche originale
Dans les cas où des éléments de niveau bloc sont présents, tels que les balises h1, la sortie de saveXML est tronqué, ne laissant que le texte dans la balise p.
L'approche mise à jour
Pour résoudre ce problème, vous pouvez utiliser une version mise à jour de la fonction loadHTML introduite dans PHP 5.4 et Libxml 2.6. Cette fonction inclut un paramètre $options qui vous permet de spécifier comment le contenu doit être analysé. En définissant les options suivantes :
$html->loadHTML($content, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
Expliquer les options
Lorsque vous exécuterez ensuite saveHTML(), la sortie ne contiendra pas de doctype, de balise html ou de balise body. Cette approche garantit que les éléments au niveau du bloc sont conservés dans la sortie.
Remarque :
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!