You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PHP Simple HTML DOM获取指定Basic EPS行的TD值

解决Simple HTML DOM提取第二组Basic EPS数值的问题

我来帮你搞定这个问题!你的核心需求是抓取第二组Basic EPS对应的数值(也就是EPS After Extra Ordinary标题下方的那一行),现在代码重复获取是因为没有精准定位到目标行,逻辑也有点混乱。下面给你两种靠谱的解决方案:


方案一:直接定位第二个Basic EPS元素

利用Simple HTML DOM的选择器找到所有文本为Basic EPS的td元素,直接取第二个(数组索引为1,因为从0开始计数),再提取它所在行的数值:

// 找到所有包含"Basic EPS"的td.det元素
$basicEpsTds = $html->find('td.det:contains("Basic EPS")');

// 检查是否存在第二组Basic EPS
if (isset($basicEpsTds[1])) {
    // 获取第二个Basic EPS所在的<tr>行
    $targetRow = $basicEpsTds[1]->parent();
    
    // 遍历该行的td,跳过第一个"Basic EPS"的单元格,提取数值
    $epsValues = [];
    foreach ($targetRow->find('td.det') as $index => $td) {
        if ($index > 0) { // 跳过第一个td(文本是Basic EPS)
            $epsValues[] = $td->plaintext;
            echo $td->plaintext . "<br>";
        }
    }
    
    // 最终$epsValues数组存储了你需要的所有数值:[0.82, 1.05, 0.74, 1.00, 0.96]
} else {
    echo "未找到第二组Basic EPS数据";
}

方案二:基于语义标题定位(更稳定)

如果页面结构可能变化,推荐依赖EPS After Extra Ordinary这个标题来定位后续的Basic EPS行,这种方法更贴合页面的语义结构,容错性更强:

// 找到"EPS After Extra Ordinary"标题所在的td元素
$epsAfterTitle = $html->find('td.detb:contains("EPS After Extra Ordinary")', 0);

if ($epsAfterTitle) {
    // 获取标题所在的<tr>,再取它的下一个兄弟<tr>(就是第二组Basic EPS的行)
    $targetRow = $epsAfterTitle->parent()->next_sibling();
    
    if ($targetRow) {
        // 提取该行的数值单元格
        $epsValues = [];
        foreach ($targetRow->find('td.det') as $index => $td) {
            if ($index > 0) {
                $epsValues[] = $td->plaintext;
                echo $td->plaintext . "<br>";
            }
        }
    } else {
        echo "EPS After Extra Ordinary标题后未找到Basic EPS行";
    }
} else {
    echo "未找到EPS After Extra Ordinary标题";
}

为什么你的原代码会重复获取?

原代码的逻辑存在嵌套遍历和判断的混乱:先找到所有td.det,然后判断文本是否为Basic EPS,又嵌套foreach遍历$mn[1],导致两次匹配到Basic EPS元素时都执行了提取逻辑,所以会重复输出。上面的两种方案都精准定位到了第二组目标行,不会出现重复问题。

内容的提问来源于stack exchange,提问作者Rajesh Kumar Bihani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:22:07