【发布时间】:2016-04-08 00:34:32
【问题描述】:
我在使用 PHP 构建并强制浏览器下载的 CSV 报告时遇到问题。问题是 PHP 在输出的最开头插入了换行符“\n”(0x0A),所以当我打开文件时,我在内容顶部看到一个不需要的 :) 空白行。有趣的是,这不会发生在我的本地环境中,只会发生在开发服务器上。
这是我部署到开发服务器以测试 PHP 脚本的示例:
<?php
$doc = array(
array(
"header1",
"header2",
"header3"
),
array(
"value11",
"value12",
"value13"
),
array(
"value21",
"value22",
"value23"
),
array(
"value31",
"value32",
"value43"
)
);
ob_start();
$df = fopen( "php://output", 'w' );
foreach ( $doc as $docLine )
{
fputcsv( $df, $docLine );
}
fclose( $df );
$output = ob_get_clean();
$now = gmdate( "D, d M Y H:i:s" );
header( "Expires: Tue, 012 Jan 1970 00:00:00 GMT" );
header( "Cache-Control: max-age=0, no-cache, must-revalidate" );
header( "Last-Modified: {$now} GMT" );
// force download
header( "Content-Type: text/csv; charset=utf-8" );
header( "Content-Disposition: attachment; filename=\"report.csv\"");
header( "Content-Transfer-Encoding: binary" );
echo $output;
开发服务器是 Ubuntu 14.04.3 LTS 使用 Apache/2.4.7 (Ubuntu) 和 PHP 5.5.9-1ubuntu4.14 (cli)
谢谢。
【问题讨论】:
-
php开始标签
<?php前有空行吗? -
提示:注释掉输出缓冲区代码以强制发出警告。希望它会告诉你确切的文件和行。
标签: php export-to-csv