使用simple_html_dom获取第三个子元素

时间:2015-02-10 22:03:31

标签: php simple-html-dom



$html = '<tr>
    <td class="aa">SomeText</td>
    <td class="aa">text 2</td>
    <td class="aa" align="right">
      <font class="aa">text 3</font>
    </td>
    <td class="aa" align="center">
    </td>
    <td class="aa" align="right">text 4</td>
    <td class="aa" align="right">text 5</td>
</tr>

<tr>
    <td class="aa">SomeText</td>
    <td class="aa">text 2</td>
    <td class="aa" align="right">
      <font class="aa">text 3</font>
    </td>
    <td class="aa" align="center">
    </td>
    <td class="aa" align="right">text 4</td>
    <td class="aa" align="right">text 5</td>
</tr>';


$dom = str_get_html($html);

$tds = $dom -> find("td");

foreach($tds as $td){

    if ($td -> innertext == $search){
        echo $td -> next_sibling()  -> innertext;
    }
}
&#13;
&#13;
&#13;

问题是这会返回文本2,我试图获取文本4

我也尝试过以下代码:

&#13;
&#13;
$dom = str_get_html($html);

$tds = $dom -> find('td', 0)->text();

foreach($tds as $td){

    if ($td -> innertext == $search){
         $td->innertext = '';   

    }
}

echo $tds;
&#13;
&#13;
&#13;

在这种情况下,变量$ search似乎无法正常工作

有没有办法用simple_html_dom做到这一点?

1 个答案:

答案 0 :(得分:0)

我想也许你的意思是下一个兄弟姐妹。

你有第一个下一个兄弟姐妹:

$td->next_sibling()

所以要获得第三个:

$td->next_sibling()->next_sibling()->next_sibling()