So speichern Sie HTML eines DOM-Dokuments, ohne Elemente auf Blockebene wegzulassen
Das Problem tritt auf, wenn versucht wird, den Inhalt eines DOM-Dokuments als HTML zu speichern ohne die Standard-HTML-, Body- und P-Tag-Wrapper einzuschließen. Die vorgeschlagene Lösung der Verwendung von saveXML($d->getElementsByTagName('p')->item(0)) funktioniert nur, wenn dem Inhalt Elemente auf Blockebene fehlen.
Das Problem mit dem Ursprünglicher Ansatz
In Fällen, in denen Elemente auf Blockebene vorhanden sind, wie z. B. h1-Tags, wird die Ausgabe von saveXML abgeschnitten, sodass nur noch übrig bleibt der Text innerhalb des p-Tags.
Der aktualisierte Ansatz
Um dieses Problem zu beheben, können Sie eine aktualisierte Version der in PHP 5.4 und Libxml 2.6 eingeführten Funktion „loadHTML“ verwenden . Diese Funktion enthält einen $options-Parameter, mit dem Sie angeben können, wie der Inhalt analysiert werden soll. Durch Festlegen der folgenden Optionen:
$html->loadHTML($content, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
Erklärung der Optionen
Wenn Sie anschließend saveHTML() ausführen, enthält die Ausgabe kein Doctype, HTML-Tag oder Body-Tag. Dieser Ansatz stellt sicher, dass Elemente auf Blockebene in der Ausgabe beibehalten werden.
Hinweis:
Das obige ist der detaillierte Inhalt vonWie speichere ich HTML aus einem DOM-Dokument, ohne Elemente auf Blockebene zu verlieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!