2012-03-29 17 views
11

Ich bin Parsing und holen HTML-Dokumente zu DOMDocument. Diese Dokumente sind untergeordnete Formulare, die auf einer anderen Seite angezeigt werden. Beim Speichern von analysierten DOMDocuments werden automatisch Doctype-, HTML-, Head- und Body-Tags hinzugefügt. Da ich an Kinderformen arbeite, möchte ich all diese entfernen und nur die Kind-Tags des Formulars speichern.Entfernen von Doctype beim Speichern von domdocument

Wie kann ich die automatische Generierung von HTML-, Kopf-, Körper-und andere Tags überspringen, während Domodokument speichern?

Antwort

15

Ich habe es selbst nach dem Lesen von Hunderten von Links. zu hoffen, dass es andere Leute hilft ...

return preg_replace('/^<!DOCTYPE.+?>/', '', str_replace(array('<html>', '</html>', '<body>', '</body>'), array('', '', '', ''), $objDOM->saveHTML())); 

Details auf: http://www.php.net/manual/en/domdocument.savehtml.php

20

Gleiche wie @KoolKabin Antwort, aber ein wenig kürzer:

return preg_replace('~<(?:!DOCTYPE|/?(?:html|body))[^>]*>\s*~i', '', $dom->saveHTML()); 
4

Ab PHP 5.4 und 2.6 Libxml, Es gibt derzeit einfacher Ansatz: Wenn Sie HTML laden, wie dies

in der Ausgabe ist, wird es keine Doctype-, HTML- oder Body-Tags. source

Verwandte Themen