如何使fputcsv"回显"数据

Sal*_*n A 28 php csv export-to-csv

我需要一种方法使fputscv函数动态地将数据写入浏览器,而不是创建临时文件,将数据保存到该文件中并执行操作echo file_get_contents().

Seb*_*rre 44

在PHP docs网站上找到了这个,在函数参考下首先发表评论:

function outputCSV($data) {
  $outstream = fopen("php://output", 'w');
  function __outputCSV(&$vals, $key, $filehandler) {
    fputcsv($filehandler, $vals, ';', '"');
  }
  array_walk($data, '__outputCSV', $outstream);
  fclose($outstream);
}
Run Code Online (Sandbox Code Playgroud)

第二种选择:

$csv = fopen('php://temp/maxmemory:'. (5*1024*1024), 'r+');
fputcsv($csv, array('blah','blah'));
rewind($csv);

// put it all in a variable
$output = stream_get_contents($csv);
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!

顺便说一句,PHP文档应该始终是您尝试解决问题的第一站.:-)

  • 我在4年多前回答过这个问题,也许有些事情发生了变化?我不能老实说我是否尝试过,但我怀疑我会这样做.随意扩展什么是不工作,而不是没有细节的空回复,也许我会进一步研究它. (4认同)
  • PHP 网站的 outputCSV() 不起作用,您是否测试过这个? (2认同)

pow*_*tac 16

通过对PHP网站的评论

<?php
$out = fopen('php://output', 'w');
fputcsv($out, array('this','is some', 'csv "stuff", you know.'));
fclose($out);
?>
Run Code Online (Sandbox Code Playgroud)


Per*_*ere 6

由于最初的提问者想“即时写入浏览器”,也许值得注意(就像我的情况一样,没有人提到过),如果您想强制使用文件名和对话框要求在浏览器中下载文件,您必须在输出任何内容之前设置正确的标题fputcsv

header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=myFile.csv');
Run Code Online (Sandbox Code Playgroud)