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

改造CSV转HTML表格PHP脚本:为指定行添加<tfoot>标签

问题:给CSV转换的HTML表格最后4行添加标签

我用下面的PHP脚本处理大型CSV文件已经好几年了,它能把CSV里的147-170行、0-21列转换成HTML表格,其中第147行已经用标签包裹。现在需要修改代码,把选定范围里的最后4行(167-170行)用标签包裹,该怎么改?

原脚本

<?php
$row = 1;

if(($handle = fopen("CSV/thesfpsquads23.csv", "r")) !== false) {

    $table1 = '<table id="exampleaugnov" class="sfpsquad augnov">';

    while (($data = fgetcsv($handle, 1000, ",")) !== false) {

        $table1Add = false;
        if($row >=147 && $row <= 170)
            $table1Add = true;

        $num = count($data);

        if($row == 147) {

            $table1 .= '<thead><tr>';

            for($c = 0; $c <= 21; $c++) {
                $value = empty($data[$c]) ? "0" : $data[$c];

                $table1 .= '<th>'.$value.'</th>';
            }

            $table1 .= '</tr></thead><tbody>';

        } else {

            if($table1Add) $table1 .= '<tr>';

            for($c = 0; $c <= 21; $c++) {
                $value = empty($data[$c]) ? "0" : $data[$c];

                if($table1Add) $table1 .= '<td>'.$value.'</td>';
            }

            if($table1Add) $table1 .= '</tr>';

        }

        $row++;

    }

    $table1 .= '</tbody></table>';
    fclose($handle);

    echo $table1;
}
?>

解决方案

修改后的完整代码

<?php
$row = 1;

if(($handle = fopen("CSV/thesfpsquads23.csv", "r")) !== false) {

    $table1 = '<table id="exampleaugnov" class="sfpsquad augnov">';

    while (($data = fgetcsv($handle, 1000, ",")) !== false) {

        $table1Add = false;
        if($row >=147 && $row <= 170)
            $table1Add = true;

        $num = count($data);

        if($row == 147) {
            // 处理表头,开启tbody
            $table1 .= '<thead><tr>';
            for($c = 0; $c <= 21; $c++) {
                $value = empty($data[$c]) ? "0" : $data[$c];
                $table1 .= '<th>'.$value.'</th>';
            }
            $table1 .= '</tr></thead><tbody>';

        } elseif ($row == 167) {
            // 到达tfoot起始行,闭合tbody并开启tfoot
            $table1 .= '</tbody><tfoot>';
        }

        // 处理tbody或tfoot中的行(排除表头行)
        if($table1Add && $row != 147) {
            $table1 .= '<tr>';
            for($c = 0; $c <= 21; $c++) {
                $value = empty($data[$c]) ? "0" : $data[$c];
                $table1 .= '<td>'.$value.'</td>';
            }
            $table1 .= '</tr>';
        }

        $row++;
    }

    // 闭合tfoot和表格
    $table1 .= '</tfoot></table>';
    fclose($handle);

    echo $table1;
}
?>

关键改动说明

  • 新增行号判断$row == 167,在这一行时先闭合<tbody>标签,再开启<tfoot>标签,实现表格区域的切换。
  • 调整行内容处理逻辑,拆分原有的else分支,让代码结构更清晰,避免嵌套过深。
  • 最后闭合表格时,将原有的</tbody>替换为</tfoot>,确保HTML结构完整闭合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 06:05:15