Удаление doctype при сохранении domdocument
Я разбираю и извлекаю html-документы в DOMDocument. Эти документы представляют собой дочерние формы, которые будут отображаться внутри другой страницы. Сохраняя анализируемые DOMDocuments, он автоматически добавляет теги doctype, html, head и body. так как я работаю над дочерними формами, я бы хотел удалить все эти и сохранить только дочерние теги формы.
Как я могу пропустить автоматическую генерацию html, head, body и других тегов при сохранении domdocument?
Ответы
Ответ 1
Получил это сам после прочтения сотен ссылок. надеюсь, что это поможет другим парням...
return preg_replace('/^<!DOCTYPE.+?>/', '', str_replace( array('<html>', '</html>', '<body>', '</body>'), array('', '', '', ''), $objDOM->saveHTML()));
Подробно: http://www.php.net/manual/en/domdocument.savehtml.php
Ответ 2
То же, что и @KoolKabin, но немного короче:
return preg_replace('~<(?:!DOCTYPE|/?(?:html|body))[^>]*>\s*~i', '', $dom->saveHTML());
Ответ 3
Как и в PHP 5.4 и Libxml 2.6, в настоящее время существует более простой подход: когда вы загружаете html в качестве этого
$html->loadHTML($content, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
на выходе не будет тегов doctype, html или body. источник