如何获得DOMNode的innerHTML?

2022-08-30 07:31:18

在 PHP DOM 实现中,你使用什么函数来获取给定 DOMNode 的内部 HTML?有人能给出可靠的解决方案吗?

当然,outerHTML也可以。


答案 1

此更新的变体与 PHP 手册用户注释 #89718 进行比较:

<?php 
function DOMinnerHTML(DOMNode $element) 
{ 
    $innerHTML = ""; 
    $children  = $element->childNodes;

    foreach ($children as $child) 
    { 
        $innerHTML .= $element->ownerDocument->saveHTML($child);
    }

    return $innerHTML; 
} 
?> 

例:

<?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); 
} 
?> 

答案 2

下面是函数式编程风格的版本:

function innerHTML($node) {
    return implode(array_map([$node->ownerDocument,"saveHTML"], 
                             iterator_to_array($node->childNodes)));
}

推荐