2012-03-29 85 views
11

我解析並提取HTML文檔到DOMDocument。這些文檔是將顯示在另一個頁面內的子表單。在保存解析的DOMDocuments時,它會自動添加doctype,html,head和body標籤。因爲我正在處理子表單,所以我想刪除所有這些表單並僅保存子標記。保存domdocument時刪除文檔類型

如何跳過在保存domdocument時自動生成html,head,body和其他標籤?

回答

15

通過閱讀數百個鏈接後自己明白。希望它可以幫助其他人也...

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

細節上:http://www.php.net/manual/en/domdocument.savehtml.php

20

同@KoolKabin答案,但更短一點:

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

由於PHP 5.4和xml庫[Libxml 2.6,目前有更簡單的方法:當你加載html爲這樣的

$html->loadHTML($content, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); 

在輸出中,會有沒有文檔類型,html或body標籤。 source