PHP domdocument 或 domxpath:如何提取 TR 并保存 HTML


php domdocument or domxpath: how to extract TRs and save html

我整天都在为此苦苦挣扎。

我在字符串中有一个 html 表。

<TABLE>
  <TBODY>
    <TR CLASS=dna1>
      <TD></TD><TD></TD><TD></TD><TD></TD>
    </TR>
    <TR CLASS=dna2>
      <TD></TD><TD></TD><TD></TD><TD></TD>
    </TR>
    repeat...

<TD>里面有一些我需要处理的<DIV>和<SPAN>

我需要提取每个<TR>(两个类)并将 html 保存在一个数组中,其中每个<TR>都是一个数组元素。

创建节点列表数组很容易,但是如何获取实际的html?

如果必须将 HTML 另存为字符串,则有 DOMDocument::saveHTML

$elems = $xpath->query('//tr');
foreach ($elems as $elem) {
  $array[] = $doc->saveHTML($elem);
}

(请注意,saveHTML 的参数从 PHP 5.3.6 开始可用。

不过,我建议保存节点本身,并在输出节点之前不久将它们转换为字符串。

或者仅使用 DOMDocument

$dom = new DOMDocument();   
@$dom->loadHTML($html);
if($table=$dom->getElementsByTagName('table')->item(0)){
    //traverse the table and output every rows
    $rows=array();
    foreach ($table->childNodes as $row){
        $rows[]=$dom->saveHTML($row);
    }
}