¿Cómo obtener el HTML interno de DOMNode?
¿Qué función utiliza para obtener el HTML interno de un DOMNode determinado en la implementación PHP DOM? ¿Alguien puede dar una solución confiable?
Por supuesto, el HTML externo también servirá.
Aceptado
Compare esta variante actualizada con la nota de usuario n.° 89718 del manual de PHP :
<?php
function DOMinnerHTML(DOMNode $element)
{
$innerHTML = "";
$children = $element->childNodes;
foreach ($children as $child)
{
$innerHTML .= $element->ownerDocument->saveHTML($child);
}
return $innerHTML;
}
?>
Ejemplo:
<?php
$dom= new DOMDocument();
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->load($html_string);
$domTables = $dom->getElementsByTagName("table");
// Iterate over DOMNodeList (Implements Traversable)
foreach ($domTables as $table)
{
echo DOMinnerHTML($table);
}
?>
Aquí hay una versión en un estilo de programación funcional :
function innerHTML($node) {
return implode(array_map([$node->ownerDocument,"saveHTML"],
iterator_to_array($node->childNodes)));
}
Para devolver el valor html
de un elemento, puede usar C14N() :
$dom = new DOMDocument();
$dom->loadHtml($html);
$x = new DOMXpath($dom);
foreach($x->query('//table') as $table){
echo $table->C14N();
}