保存domdocument时删除doctype

Koo*_*bin 15 php skip domdocument

我正在解析并将html文档提取到DOMDocument.这些文档是将在另一页内显示的子表单.在保存解析的DOMDocuments时,它会自动添加doctype,html,head和body标记.因为我正在处理子表单,我想删除所有这些并仅保存表单的子标签.

如何在保存domdocument的同时跳过自动生成html,head,body和其他标签?

Ali*_*xel 22

和@KoolKabin一样回答,但更短一些:

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


Koo*_*bin 16

通过阅读数百个链接后自己搞定了.希望它能帮助其他人......

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

详细信息:http://www.php.net/manual/en/domdocument.savehtml.php


Ani*_*ari 11

从PHP 5.4和Libxml 2.6开始,目前有一种更简单的方法:当您加载html时

$html->loadHTML($content, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); 
Run Code Online (Sandbox Code Playgroud)

在输出中,将没有doctype,html或body标签.资源