2012-03-29 25 views
11

Estoy analizando y obteniendo documentos html en DOMDocument. Esos documentos son formularios secundarios que se mostrarán dentro de otra página. Al guardar los DOMDocuments analizados, agrega automáticamente las etiquetas doctype, html, head y body. dado que estoy trabajando en formularios secundarios, me gustaría eliminarlos y guardar solo las etiquetas hijo de formulario.eliminando doctype mientras guardo domdocument

¿Cómo puedo omitir la generación automática de html, cabeza, cuerpo y otras etiquetas mientras guardo domdocument?

Respuesta

15

Lo tengo después de leer cientos de enlaces. Espero que ayuda a otros chicos también ...

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

Detalle en: http://www.php.net/manual/en/domdocument.savehtml.php

20

Igual respuesta @KoolKabin, pero un poco más corto:

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

A partir de PHP 5.4 y 2.6 Libxml, Actualmente hay un enfoque más simple: cuando carga html como este

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

en la salida, habrá no doctype, html o etiquetas corporales. source