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?
Same as @KoolKabin answer, but a little shorter:
return preg_replace('~<(?:!DOCTYPE|/?(?:html|body))[^>]*>\s*~i', '', $dom->saveHTML());
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
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