У меня есть строка, содержащая несколько <html><body><div>Content</div></body></html>
тегов. Я хочу получить все содержимое и объединить их в одну действительную структуру. Например:
<html><body><div>Content</div></body></html>
<html><body><div>Content</div></body></html>
<html><body><div>Content</div></body></html>
Должно быть:
<html>
<body>
<div>Content</div>
<div>Content</div>
<div>Content</div>
</body>
</html>
Мой текущий код выглядит следующим образом:
libxml_use_internal_errors(true);
$newDom = new DOMDocument();
$newBody = "";
$newDom->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'));
$bodyTags = $newDom->getElementsByTagName("body");
foreach($bodyTags as $body) {
$newBody .= $newDom->saveHTML($body);
}
$newBody
теперь содержит все теги тела:
<body><div>Content</div></body>
<body><div>Content</div></body>
<body><div>Content</div></body>
Как сохранить только HTML содержимое каждого тега тела в $newBody
?
Редактировать:
На основе @ Ответ НайджелРена: Это мое решение:
libxml_use_internal_errors(true);
$newDom = new DOMDocument();
$newBody = '';
$newDom->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'));
$bodyTags = $newDom->getElementsByTagName("body");
foreach($bodyTags as $body) {
foreach ($body->childNodes as $node) {
$newBody .= $newDom->saveHTML($node);
}
}
$newDom = new DOMDocument();
$newDom->loadHTML(mb_convert_encoding($newBody, 'HTML-ENTITIES', 'UTF-8'));
$newBody = $newDom->saveHTML();