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

使用domDocument统计HTML表格行数时$rows为null的问题

解决DOMDocument统计表格行数时$rows为null的问题

嘿,我一眼就看出问题出在哪啦!你现在的代码里犯了一个典型错误:把DOMElement对象直接传给了substr_count()函数——这个函数是用来处理字符串的,对DOM节点对象完全不适用,所以$rows返回null是必然的结果。

咱们来修正一下代码,用DOMDocument自带的方法正确统计行数:

修正后的完整代码

if(isset($_POST['List']) && $_POST['List'] == true) { 
    $data = file_get_contents('File.php'); 
    $dom = new domDocument; 
    @$dom->loadHTML($data); 
    $dom->preserveWhiteSpace = false; 
    $table = $dom->getElementById('Table'); 
    
    // 替换错误的substr_count,改用DOM方法获取tr元素集合
    $rowNodes = $table->getElementsByTagName('tr');
    $rows = $rowNodes->length; // length属性直接返回tr元素的数量
    
    for($x=0;$x<$rows;$x++) { 
        // 这里可以通过$rowNodes->item($x)拿到对应的tr节点,继续处理逻辑
    } 
}

额外优化:避免统计嵌套表格的tr

如果你的表格里还嵌套了其他子表格,上面的方法会把嵌套表格里的<tr>也统计进去。如果只想统计当前表格的直接子行,可以用XPath精准定位:

$xpath = new DOMXPath($dom);
// 仅选中id为Table的表格的直接子tr元素
$rows = $xpath->query('//table[@id="Table"]/tr')->length;

这样就能准确得到你想要的表格行数啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:23:48