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

PHP导出CSV文件开头空白行问题:如何删除fwrite写入的首行空行?

解决CSV文件开头空白行的问题

核心原因及修复方案

1. 移除PHP文件的BOM头

很多编辑器默认会给UTF-8文件添加BOM头(三个隐藏字符),这会直接导致输出开头出现空白行。

  • 用VS Code、Notepad++等编辑器打开你的PHP文件,将编码改为UTF-8无BOM后重新保存。

2. 确保header前无任何输出

header()必须在所有输出(包括空格、换行、HTML标签,甚至<?php标签前的空白)之前调用:

  • 检查文件最开头的<?php标签,确保它是文件的第一个字符,前面没有任何空格或换行。
  • 排查代码中是否有echo、print、var_dump这类输出语句出现在header()之前。

3. 强制清空输出缓冲区

如果之前有未处理的输出缓冲区残留内容,也会生成空白行。在发送header前添加以下代码:

ob_clean();
flush();

4. 优化字符串换行的写法

避免硬编码换行符,改用PHP内置的PHP_EOL,同时确保每行结尾都有正确的换行:

$kata_header = "REKENING;NOMINAL;EMAIL" . PHP_EOL;
$kata_header .= "tes" . PHP_EOL;

修复后的完整代码示例

<?php
// 先清空缓冲区,避免残留输出
ob_clean();
flush();

$name_file = 'ekspor-kag-bri-' . date('Ym', strtotime($data_pendukung['tgl_trf'])) . '.csv';
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="' . $name_file . '"');

$kata_header = "REKENING;NOMINAL;EMAIL" . PHP_EOL;
$kata_header .= "tes" . PHP_EOL;
$arr_isi_cell = [];
foreach ($dt_gaji as $row) {
    $isi_cell = str_replace("-","",$row->norekening) . ';' . floatval($row->total_gaji) . ';' . 'inayohanes@gmail.com' . PHP_EOL;
    array_push($arr_isi_cell,$isi_cell);
}
$myfile = fopen("php://output", "wb");
fwrite($myfile,$kata_header);
foreach($arr_isi_cell as $line){
    fwrite($myfile,$line);
}

fclose($myfile);
exit; // 终止脚本,防止后续代码产生输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 17:20:42