33

fputscv一時ファイルを作成してそのファイルにデータを保存し、を実行する代わりに、関数がその場でブラウザーにデータを書き込むようにする方法が必要echo file_get_contents()です。

4

4 に答える 4

47

関数リファレンスの下の最初のコメント:

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

そして2番目のオプション:

$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);

お役に立てれば!

ところで、物事を理解しようとするときは、常にPHPドキュメントが最初の目的地になるはずです。:-)

于 2011-01-14T15:34:54.103 に答える
25

PHPサイトのコメントで

<?php
$out = fopen('php://output', 'w');
fputcsv($out, array('this','is some', 'csv "stuff", you know.'));
fclose($out);
?>
于 2011-01-14T15:37:11.487 に答える
7

元の質問者が「その場でブラウザに書き込む」ことを望んでいたので、ファイル名とブラウザでファイルをダウンロードするように求めるダイアログを強制したい場合は、おそらく注目に値するでしょう(私の場合と誰も言及しなかったように)で何かを出力する前に、適切なヘッダーを設定する必要がありますfputcsv

header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=myFile.csv');
于 2015-05-06T10:10:43.967 に答える