2012-03-29 10 views
11

私はDOMDocumentにhtmlドキュメントを解析して取得しています。これらの文書は、別のページの中に表示される子フォームです。解析されたDOMDocumentを保存している間、自動的にdoctype、html、headおよびbodyタグを追加します。私は子供のフォームに取り組んでいるので、私はそれらをすべて削除し、フォームの子タグのみを保存したいと思います。domdocumentを保存しているときにdoctypeを削除する

domdocumentを保存している間に、html、head、body、およびその他のタグの自動生成をスキップできますか?

答えて

15

何百ものリンクから読んだら、それを自分で手に入れました。 ...それはあまりにも他の人を助け願ってい

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

詳細について:@KoolKabinの答えと同じhttp://www.php.net/manual/en/domdocument.savehtml.php

20

が、少し短い:PHP 5.4とのLibxml 2.6のよう

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

、現在のところ、より簡単なアプローチがあります。このようにhtmlをロードすると、出力にはこのようにHTMLをロードすると

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

が出力されます。 doctype、html、bodyタグはありません。 source

関連する問題