简单的html dom,只从tbody中选择tr

时间:2014-04-13 10:04:16

标签: simple-html-dom

我试图从下表中抓取TBODY中的所有TR

<table id="a">
    <thead>
        <tr>empty</tr>
    </thead>
    <tbody>
        <tr>
          content I want is here
        </tr>
    </tbody>
</table>

使用此代码

$html->find('tbody tr');

但它不会忽视thead中的空tr。有没有人有解决方案?

1 个答案:

答案 0 :(得分:2)

这确实是一种奇怪的行为......即使使用>意味着直接的孩子,也行不通!

检查一下:

$input =  <<<_DATA_
    <table id="a">
        <thead>
            <tr>empty</tr>
        </thead>
        <tbody>
            <tr>
              content I want is here
            </tr>
        </tbody>
    </table>
_DATA_;

//Create a DOM object
$html = new simple_html_dom();
// Load HTML from a string
$html->load($input);


foreach($html->find('tbody > tr') as $tr){
    // The parent tag name
    $parentTag = $tr->parent()->tag; 

    echo $parentTag . ' => ' . $tr->plaintext;

    // Make sure the parent tag is 'tbody'
    if( $parentTag == 'tbody' )
        echo ' => OK';

    echo '<br>';
}

<强>输出

thead => empty
tbody => content I want is here => OK

所以,一个workarround将测试父母是否等于上面所示的适当值