Exportiert ein bestimmtes Element in DOMDocument in eine Zeichenfolge

8

Ich importiere einen beliebigen HTML-Code in ein DOMDocument mit der Funktion loadHTML() , zB:

%Vor%

Ich möchte dann ein paar Attribute / Knotenwerte ändern mit DOMDocument Methoden, die ich kein Problem machen kann.

Sobald ich diese Änderungen vorgenommen habe, möchte ich die HTML-Zeichenfolge exportieren (mit ->saveHTML() ), ohne die <html><body>... -Tags, die der DOMDocument automatisch zum HTML hinzufügt.

Ich verstehe, warum diese hinzugefügt werden (um ein gültiges Dokument zu gewährleisten), aber wie würde ich nur meinen bearbeiteten HTML-Code wiederherstellen (im Wesentlichen alles zwischen den <body> -Tags)?

Ich habe diesen Beitrag gelesen und dabei einige Lösungen angeboten Ich würde das lieber "richtig" machen, also ohne einen String zu verwenden, der die <body> -Tags ersetzt. Die Gültigkeit des HTML ist kein Problem, da es vorher durch einen HTML-Reiniger läuft.

Irgendwelche Ideen? Danke.

BEARBEITEN

Ich bin mir des $node -Parameters bewusst, der zu saveHTML() in PHP 5.3.6 hinzugefügt wurde, leider stecke ich mit 5.2 fest.

    
Clive 02.11.2011, 10:26
quelle

3 Antworten

4

Vielleicht hilft der Quellcode davon - Sie ' Verwenden Sie eine Regex, um die unnötigen Strings zu entfernen:

Ссылка

%Vor%

saveHTMLExact () - DOMDocument hat ein extrem schlecht entworfenes "Feature". Wenn der geladene HTML-Code keine <html> und <body> Tags enthält, fügt er sie automatisch hinzu (yup, Es gibt keine Flags, um dieses Verhalten zu deaktivieren.)

Wenn Sie also $ doc- & gt; saveHTML () aufrufen, enthält Ihr neu gespeicherter Inhalt jetzt <html><body> und DOCTYPE . Nicht sehr praktisch bei der Arbeit mit Code-Fragmenten (XML hat ein ähnliches Problem).

SmartDOMDocument enthält eine neue Funktion mit dem Namen saveHTMLExact (), die genau das tut, was Sie wollen - sie speichert HTML, ohne den zusätzlichen Müll hinzuzufügen, den DOMDocument tut.

Auch andere Fragen haben ähnliche Dinge gefragt:

Wie kann HTML von DOMDocument ohne HTML-Wrapper gesichert werden?

    
nickb 02.11.2011, 10:51
quelle
2

Verwenden Sie DOMDocument- & gt; saveXML ()?

%Vor%

Es gibt <p><a href="test.php">Test</a></p>

aus     
Alexander 02.11.2011 11:05
quelle
-1

Danke, aber ich werde den Typ des ersten Tags im Body nicht unbedingt kennen, es muss generisch sein

%Vor%     
Kamil Valenta 01.02.2017 09:04
quelle

Tags und Links