如何解析表内的表?

时间:2014-08-20 11:17:41

标签: php html simple-html-dom

我有一个html内容,如下所示:

<table>
<tbody>
<tr>
<td>blabla</td>
<td>blabla</td>
</tr>
<tr>
<td>blabla</td>
<td>blabla</td>
</tr>
<tr>
<td>blabla</td>
<td><table>THIS IS MY TABLE CONTENT</table></td>
</tr>
</tbody>
</table>

我想解析这是我的桌子内容而且只有这张桌子,外表对我来说无关紧要。 我正在使用Simple HTML DOM解析器,现在我的代码看起来像这样:

$table = $html->find('table');

    foreach ($table->find('table') as $tbl){

        foreach ($tbl->find('tr') as $tr){

            foreach ($tr->find('td') as $td){
             // some logic
            }

        }

    }

我的问题是,这样我就没有得到任何结果。如何以正确的方式执行此解析?

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

如何在XPath

中使用DOM
$str = '<table><tbody><tr><td>blabla</td><td>blabla</td></tr><tr><td>blabla</td><td>blabla</td></tr><tr><td>blabla</td><td><table>THIS IS MY TABLE CONTENT</table></td></tr></tbody></table>';
$dom = new DOMDocument();
$dom->loadHTML($str); // $str is your html string
$xpath = new DOMXPath($dom);
$tables = $xpath->query('.//td/table'); // fetch all tables inside td
foreach($tables as $table){
   // Do your stuff with each table
   echo $table->nodeValue; // $table is your current $table
}

答案 1 :(得分:0)

内表是:

$html->find('table table', 0);