Можно ли использовать класс DOMDocument и не разрешать ему добавлять декларации типа документа, заголовки и теги? Я пишу свой текущий бит кода для серверной части include, и он отображается на уже хорошо сформированной странице. Мне не нужны дополнительные теги.
Начиная с PHP 5.3.6 вы можете использовать узел в echo $DOMDocument->saveHTML($the_node_you_want_to_show)
, до этого я злоупотреблял ->saveXML()
с незначительными исправлениями. Однако у вас должен быть 1 окружающий узел (например, вывод <div>...somecontent and nodex....</div>
или цикл через дочерние узлы, если вы не хотите иметь 1 окружающий тег;
$html = ''; foreach($rootnode->childNodes as $node){ $html .= $rootnode->ownerdocument->saveHTML($node); }
Что сказал @Wrikken или, для PHP <5.3.6, просто используйте регулярное выражение:
$html = preg_replace('~<(?:!DOCTYPE|/?(?:html|body))[^>]*>\s*~i', '', $dom->saveHTML());
Из PHP 5.4
и вверх правильный ответ есть: Как сохранитьHTML DOMDocument без HTML-оболочки? от @Alessandro Vendruscolo