J'ai ce code html:
<html>
<head>
...
</head>
<body>
<div>
<div class="foo" data-type="bar">
SOMECONTENTWITHMORETAGS
</div>
</div>
</body>
Je peux déjà obtenir l'élément "foo" (mais seulement son contenu) avec cette fonction:
private function get_html_from_node($node){
$html = '';
$children = $node->childNodes;
foreach ($children as $child) {
$tmp_doc = new DOMDocument();
$tmp_doc->appendChild($tmp_doc->importNode($child,true));
$html .= $tmp_doc->saveHTML();
}
return $html;
}
Mais je voudrais retourner toutes les balises html (y compris ses attributs) de DOMElement. Comment je peux faire ça?
Utilisez l'argument facultatif pour DOMDocument::saveHTML
: cela dit "afficher cet élément uniquement".
return $node->ownerDocument->saveHTML($node);
Notez que l'argument n'est disponible qu'à partir de PHP 5.3.6. Avant cela, vous devez utiliser DOMDocument::saveXML
à la place. Les résultats peuvent être légèrement différents. De plus, si vous avez déjà une référence au document, vous pouvez simplement le faire:
$doc->saveHTML($node);