【问题标题】:simple html dom - find within a find简单的 html dom - 在查找中查找
【发布时间】:2025-12-23 02:30:12
【问题描述】:

我需要一些有关 simple_html_dom 的帮助。

我正在尝试解析具有许多表行的数据表。在一些 td 单元格中,还有一些我需要单独解析的 div 标签。

    foreach($html->find('tr.statistics') as $data) {
    $cell_one = $data->find('td', 0)->plaintext;
    $cell_two = $data->find('td', 1)->plaintext;
    $cell_three = $data->find('td', 2)->innertext
    }

这可以正常工作,但我还需要在 $cell_three 中找到两个 div 标签。

$cell_three 数据如下所示

<div id="_Div_Line85">65</div><div id="_Div_Line95">56</div> 

所以我的问题是,我将如何获取这两个 div 标签中的内容?

【问题讨论】:

  • 所以你需要去掉HTML,只有6556
  • 这是正确的,我正在尝试将两个数字都放入自己的变量中

标签: php simple-html-dom


【解决方案1】:

你需要使用链接。

$sub_1 = $data->find('td', 2)->find('td',1)->plaintext;
$sub_2 = $data->find('td', 2)->find('td',2)->plaintext;

【讨论】:

  • 谢谢,但我尝试过类似的方法,但无法正常工作。当我从 $cell_three 中删除 ->innertext 时,它只是挂起并超时。 $cell_three = $data->find('td', 2)->innertext;至少给我 td 单元格内的两个 div。但我需要解析那些 div 标签
  • 链接怎么样? $sub_1 = $data->find('td', 2)->find('td',1)->明文;
  • 非常感谢! $data->find('td', 6)->find('div',1)->明文;是我需要的答案!
  • 太棒了。我将在上面编辑我的答案以反映这一点。请将其标记为已接受,以便将来对其他人有所帮助。
【解决方案2】:

以下代码会将每个div 转换为一个数组,然后剥离HTML 代码。

$cell_three = $data->find('td', 2)->innertext;
$cell_three = explode("</div>", $cell_three);
$cell_three = array_map(function($v){
    return trim(strip_tags($v));
}, $cell_three);

然后你只需遍历数组。

foreach($cell_three as $sub_cell){
    $sub_cell_one = $sub_cell->find('td', 1)->plaintext;
    $sub_cell_two = $sub_cell->find('td', 2)->plaintext;
}

【讨论】: