我正在解析并将html文档提取到DOMDocument。这些文档是将在另一页内显示的子表单。在保存解析的DOMDocuments时,它会自动添加doctype,html,head和body标记。因为我正在处理子表单,所以我想删除所有这些表格并仅保存表单的子标签。
如何在保存domdocument的同时跳过自动生成html,head,body和其他标签?
答案 0 :(得分:21)
与@KoolKabin一样回答,但更短一些:
return preg_replace('~<(?:!DOCTYPE|/?(?:html|body))[^>]*>\s*~i', '', $dom->saveHTML());
答案 1 :(得分:16)
在阅读了数百个链接后自己动手了。希望它能帮助其他人...
return preg_replace('/^<!DOCTYPE.+?>/', '', str_replace( array('<html>', '</html>', '<body>', '</body>'), array('', '', '', ''), $objDOM->saveHTML()));
答案 2 :(得分:9)
从PHP 5.4和Libxml 2.6开始,目前有更简单的方法:当您加载html时
$html->loadHTML($content, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
在输出中,将没有doctype,html或body标签。 source