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

如何用PHP获取含指定字符串的<td>对应的后续<td>值

使用simple_html_dom提取表格指定行的列值,及类SQL替代方案

一、simple_html_dom的实现方法

你可以直接遍历表格的每一行,检查第一列的文本是否包含目标时间字符串,匹配成功后直接提取对应行的第二、第三列内容。代码示例如下:

// 假设已通过simple_html_dom加载目标HTML到$html对象
$targetTime = '00:30';

// 遍历表格的所有行
foreach ($html->find('tr') as $row) {
    $tdElements = $row->find('td');
    // 确保当前行有至少3个td,避免索引越界
    if (count($tdElements) >= 3) {
        // 去掉空白后检查第一列是否包含目标时间
        if (strpos(trim($tdElements[0]->plaintext), $targetTime) !== false) {
            // 提取第二、第三列的文本内容
            $column2 = trim($tdElements[1]->plaintext);
            $column3 = trim($tdElements[2]->plaintext);
            // 输出或使用结果
            echo "第二列值:{$column2},第三列值:{$column3}";
            // 如果只需要第一个匹配项,可在此处break终止循环
            break;
        }
    }
}

关键点说明:

  • trim() 用于去除td文本中的多余空格、换行符,避免匹配失败
  • strpos() 用来检测第一列是否包含目标时间字符串,注意用!== false判断(避免目标字符串在开头时返回0被误判)
  • 先判断count($tdElements) >=3,防止某些行列数不足导致数组索引错误

二、类SQL风格的查询方案

如果你偏好类SQL的条件查询方式,可以使用PHP原生的DOMXPath,它支持通过表达式直接定位符合条件的元素,无需手动遍历:

$htmlContent = file_get_contents('目标网页地址'); // 或直接传入HTML字符串
$dom = new DOMDocument();
@$dom->loadHTML($htmlContent); // @符号忽略HTML解析时的非致命警告
$xpath = new DOMXPath($dom);

$targetTime = '00:30';
// XPath表达式:匹配所有行中第一列包含目标时间的,然后取该行的第二、第三列
$query = "//tr[contains(normalize-space(td[1]), '$targetTime')]/td[position()=2 or position()=3]";
$resultNodes = $xpath->query($query);

if ($resultNodes->length >= 2) {
    $column2 = trim($resultNodes->item(0)->nodeValue);
    $column3 = trim($resultNodes->item(1)->nodeValue);
    echo "第二列值:{$column2},第三列值:{$column3}";
}

XPath表达式解释:

  • normalize-space(td[1]):去除第一列td文本的多余空白,确保匹配准确
  • contains(..., '$targetTime'):判断第一列是否包含目标时间,类似SQL的LIKE '%xxx%'
  • td[position()=2 or position()=3]:指定提取该行的第二、第三列,类似SQL的SELECT col2, col3

另外,也可以使用QueryPath这类库,它支持CSS选择器+类SQL的链式查询语法,但原生DOMXPath已经能满足需求,无需额外安装依赖。

内容的提问来源于stack exchange,提问作者Wilf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:16:01