php domdocument或domxpath:如何提取TR并保存html

时间:2012-04-07 19:44:36

标签: php domdocument domxpath

我整天都在苦苦挣扎。

我在字符串中有一个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&gt;和<SPAN>我需要合作。

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

创建节点列表数组很简单,但我如何获得实际的html?

2 个答案:

答案 0 :(得分:3)

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

$elems = $xpath->query('//tr');

foreach ($elems as $elem) {
  $array[] = $doc->saveHTML($elem);
}

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

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

答案 1 :(得分:1)

或者仅使用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);

    }
}