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

如何使用SimpleHTMLDOM获取表格中“申请接收”对应的td日期值?

搞定SimpleHtmlDom提取申请接收日期的方法

嘿,我懂你现在的烦恼——之前拿纯文本把所有td内容都捞出来了,现在得精准揪出“application received”对应的日期对吧?别慌,我给你两种靠谱的方案,你根据自己的表格结构选就行:

方案一:通过DOM结构精准定位(推荐,结构稳定时用)

如果你的表格里,“application received”和对应的日期是在相邻的单元格里(比如一个td是标签,下一个td是日期),那直接用SimpleHtmlDom的节点遍历就能搞定:

// 先获取表格里的所有申请条目行(根据你的实际HTML调整选择器,比如table tr.item)
$applicationItems = $html->find('table tr');

foreach($applicationItems as $item) {
    // 找到包含"application received"文本的单元格
    $labelCell = $item->find('td:contains("application received")', 0);
    
    if ($labelCell) {
        // 取这个单元格的下一个兄弟节点(就是存日期的那个td)
        $dateCell = $labelCell->next_sibling();
        if ($dateCell) {
            // 清理文本,去掉多余空格,存入变量
            $receivedDate = trim($dateCell->plaintext);
            // 这里可以把$receivedDate存到数组或者做后续处理
            echo "提取到的申请接收日期:{$receivedDate}\n";
        }
    }
}

方案二:正则匹配文本(适合结构不固定但格式统一的情况)

如果“application received”和日期是在同一个单元格里(比如文本是“application received: Tue 27 Feb 2018”),那用正则表达式匹配日期就很方便:

$applicationItems = $html->find('table tr');

foreach($applicationItems as $item) {
    $itemText = $item->plaintext;
    // 匹配格式为"星期 日 月 年"的日期,忽略大小写
    if (preg_match('/application received.*?(\w{3} \d{2} \w{3} \d{4})/i', $itemText, $matches)) {
        $receivedDate = $matches[1];
        echo "提取到的申请接收日期:{$receivedDate}\n";
    }
}

小提示

  • 记得根据你实际的HTML结构调整选择器,比如如果条目不是tr而是div,就把find('table tr')改成对应的find('.application-item')之类的;
  • 如果日期格式有变化,比如是“27/02/2018”,那要调整正则表达式的匹配规则哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:38:45