Diese Frage befasst sich mit einem häufigen Problem bei der Arbeit mit DOMDocument: dem Extrahieren von HTML-Inhalten ohne die umschließenden HTML-, Body- und Absatz-Tags. Das Problem entsteht, wenn saveXML() diese Wrapper an die Ausgabe anhängt. Während die vorgeschlagene Lösung mithilfe von saveXML() für das erste Absatzelement nur für Inhalte ohne Elemente auf Blockebene funktioniert, wird in diesem Artikel eine umfassende Lösung untersucht.
Der Schlüssel zur Lösung dieses Problems liegt in der Einführung der Option $ Parameter in loadHTML() in PHP 5.4 und Libxml 2.6. Mithilfe der folgenden Optionen:
$html->loadHTML($content, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
können wir Libxml anweisen, implizite HTML- und Body-Elemente oder einen Standard-Doctype nicht automatisch hinzuzufügen. Folglich gibt saveHTML() den Inhalt ohne diese Wrapper aus.
LIBXML_HTML_NOIMPLIED deaktiviert das automatische Hinzufügen impliziter HTML-/Body-Elemente, während LIBXML_HTML_NODEFDTD verhindert, dass ein Standarddokumenttyp hinzugefügt wird, wenn keiner in der Eingabe gefunden wird.
Durch die Integration dieser Optionen können wir den gewünschten HTML-Inhalt effektiv ohne unerwünschte Wrapper extrahieren und so eine gewährleisten genauere Darstellung des Inhalts des DOM-Dokuments.
Es ist wichtig zu beachten, dass loadHTML() Libxml 2.6 erfordert, während LIBXML_HTML_NODEFDTD nur in Libxml 2.7.8 und LIBXML_HTML_NOIMPLIED in Libxml 2.7.7 verfügbar ist. Ein umfassendes Verständnis der Libxml-Parameter finden Sie in der offiziellen Dokumentation.
Das obige ist der detaillierte Inhalt vonWie kann ich HTML aus DOMDocument ohne die Wrapper-Tags speichern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!