问题
I am parsing and fetching html documents to DOMDocument. Those documents are child forms that will be displayed inside another page. While saving parsed DOMDocuments, it automatically adds doctype, html, head and body tags. since i am working on child forms i would like to remove all those and save only the child tags of form.
How can i skip automatic generation of html, head, body and other tags while saving domdocument?
回答1:
Same as @KoolKabin answer, but a little shorter:
return preg_replace('~<(?:!DOCTYPE|/?(?:html|body))[^>]*>\s*~i', '', $dom->saveHTML());
回答2:
Got it myself after reading through hundreds of links. hope it helps other guys too...
return preg_replace('/^<!DOCTYPE.+?>/', '', str_replace( array('<html>', '</html>', '<body>', '</body>'), array('', '', '', ''), $objDOM->saveHTML()));
Detail on: http://www.php.net/manual/en/domdocument.savehtml.php
回答3:
As of PHP 5.4 and Libxml 2.6, there is currently simpler approach: when you load html as this
$html->loadHTML($content, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
in the output, there will be no doctype, html or body tags. source
来源:https://stackoverflow.com/questions/9924261/removing-doctype-while-saving-domdocument