2012-03-29 13 views
11

को सहेजते समय डॉक्टरेट को हटाकर मैं dOMDocument में HTML दस्तावेज़ों को पार्सिंग और ला रहा हूं। वे दस्तावेज बाल रूप हैं जो किसी अन्य पृष्ठ के अंदर प्रदर्शित किए जाएंगे। पार्स किए गए DOMDocuments को सहेजते समय, यह स्वचालित रूप से डॉक्ट टाइप, एचटीएमएल, हेड और बॉडी टैग जोड़ता है। चूंकि मैं बाल रूपों पर काम कर रहा हूं, मैं उन सभी को हटाना चाहता हूं और केवल फॉर्म के बाल टैग को सहेजना चाहता हूं।domdocument

domdocument को सहेजते समय मैं स्वचालित पीढ़ी के एचटीएमएल, हेड, बॉडी और अन्य टैग कैसे छोड़ सकता हूं?

उत्तर

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

पीएचपी 5.4 और Libxml 2.6 के रूप में, वर्तमान में सरल दृष्टिकोण है: जब आप एचटीएमएल लोड करते हैं तो

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

आउटपुट में, वहां होगा कोई डॉक्टरेट, एचटीएमएल या बॉडी टैग नहीं। source

संबंधित मुद्दे