【发布时间】:2016-05-31 05:40:44
【问题描述】:
我使用下面的代码来导出多维数组。我正在使用 CodeIgniter 框架(2.1.0 版本)
问题:
我在数组中没有任何双引号/单引号,但在 csv 文件中某些字段有双引号。
每个 csv 文件都给我前两行空白,然后我可以看到内容
代码:
function array_to_csv($array, $download = "") {
if ($download != "") {
header('Content-Type: text/csv');
header('Content-Disposition: attachement; filename="'.$download.
'"');
header("Pragma: no-cache");
header("Expires: 0");
}
ob_start();
$f = fopen('php://output', 'w') or show_error("Can't open php://output");
$n = 0;
foreach($array as $line) {
$line = str_replace('"', '', $line); //Try to resolve first problem but it doesn't work for me.
$n++;
if (!fputcsv($f, $line)) {
show_error("Can't write line $n: $line");
}
}
fclose($f) or show_error("Can't close php://output");
$str = ob_get_contents();
ob_end_clean();
if ($download == "") {
return $str;
} else {
echo $str;
}
}
【问题讨论】:
-
如果上述代码中需要任何代码优化以使其更快,请建议我
-
在我看来你的事情有点过于复杂了。为什么要搞乱 ob_start 等?发送标题后,您可以将每一行直接写入 php://output。我不明白为什么你在开始时会出现空白行
标签: php codeigniter csv