удаление типа документа при сохранении документа - PullRequest
14 голосов
/ 29 марта 2012

Я анализирую и извлекаю HTML-документы в DOMDocument.Эти документы являются дочерними формами, которые будут отображаться на другой странице.При сохранении проанализированного DOMDocuments автоматически добавляются теги doctype, html, head и body.так как я работаю с дочерними формами, я хотел бы удалить все эти и сохранить только дочерние теги формы.

Как я могу пропустить автоматическое создание тегов html, head, body и других при сохранении документа domdocument?

Ответы [ 3 ]

21 голосов
/ 05 апреля 2012

То же, что и ответ @KoolKabin, но немного короче:

return preg_replace('~<(?:!DOCTYPE|/?(?:html|body))[^>]*>\s*~i', '', $dom->saveHTML());
17 голосов
/ 04 апреля 2012

Получил сам после прочтения сотен ссылок. надеюсь, это поможет и другим парням ...

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

Деталь на: http://www.php.net/manual/en/domdocument.savehtml.php

11 голосов
/ 14 декабря 2017

Начиная с PHP 5.4 и Libxml 2.6, в настоящее время существует более простой подход: когда вы загружаете html как этот

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

в выводе не будет тегов doctype, html или body. источник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...