Heim > Backend-Entwicklung > PHP-Tutorial > Wie speichere ich HTML aus einem DOM-Dokument, ohne Elemente auf Blockebene zu verlieren?

Wie speichere ich HTML aus einem DOM-Dokument, ohne Elemente auf Blockebene zu verlieren?

Patricia Arquette
Freigeben: 2024-12-18 10:11:17
Original
827 Leute haben es durchsucht

How to Save HTML from a DOMDocument Without Losing Block-Level Elements?

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);
Nach dem Login kopieren

Erklärung der Optionen

  • LIBXML_HTML_NOIMPLIED deaktiviert das automatische Hinzufügen implizierter HTML-/Body-Elemente.
  • LIBXML_HTML_NODEFDTD verhindert, dass ein Standarddokumenttyp hinzugefügt wird, wenn dies nicht der Fall ist gefunden.

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:

  • In der Libxml 2.6-Dokumentation heißt es, dass Libxml 2.6 erforderlich ist, aber LIBXML_HTML_NODEFDTD ist nur in Libxml verfügbar 2.7.8.
  • LIBXML_HTML_NOIMPLIED ist in Libxml 2.7.7 verfügbar.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage