Это часть нескольких модификаций, которые модуль синтаксического анализа HTML libxml вносит в документ для работы с поврежденным HTML. Это происходит только при использовании loadHTML
и loadHTMLFile
при частичной разметке. Если вы знаете, что частичное действительное значение X (HT) ML, используйте load
и loadXML
.
Вы можете использовать
$doc->saveXml($doc->getElementsByTagName('body')->item(0));
, чтобы вывести externalHTML элемента body, например <body>anything else</body>
и удалите элемент body с помощью str_replace
или извлеките внутренний html с помощью substr
.
$html = '<p>I am a fragment</p>';
$dom = new DOMDocument;
$dom->loadHTML($html); // added html and body tags
echo substr(
$dom->saveXml(
$dom->getElementsByTagName('body')->item(0)
),
6, -7
);
// <p>I am a fragment</p>
Обратите внимание, что при этом будет использоваться XHTML-совместимая разметка, поэтому <br>
станет <br/>
. Начиная с PHP 5.3.5, нет способа передать узел в saveHTML()
. Был подан запрос об ошибке.