Как сделать fputcsv "эхом" данных


Мне нужен способ сделать fputscv функция записи данных в браузер на лету вместо создания временного файла, сохранения данных в этот файл и выполнения echo file_get_contents().

Author: Salman A, 2011-01-14

4 answers

Нашел это на веб-сайте 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);
}

И второй вариант:

$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 всегда должны быть вашей первой остановкой при попытке разобраться в ситуации. :-)

 39
Author: Seb Barre, 2011-01-14 15:34:54

По комментарию на сайте PHP

<?php
$out = fopen('php://output', 'w');
fputcsv($out, array('this','is some', 'csv "stuff", you know.'));
fclose($out);
?>
 15
Author: powtac, 2011-01-14 15:37:11

Поскольку первоначальный спрашивающий хотел "писать в браузер на лету", возможно, стоит отметить (как это было в моем случае, и никто об этом не упоминал), что если вы хотите принудительно ввести имя файла и диалоговое окно с просьбой загрузить файл в браузере, вы должны установить правильные заголовки, прежде чем выводить что-либо с помощью fputcsv:

header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=myFile.csv');
 2
Author: Pere, 2015-05-06 10:10:43

Http://www.codehive.net/PHP-Array-to-CSV-1.html предоставит вам функцию, которая соответствует требованиям отказа от использования файловой системы.

 -3
Author: Geoffrey Wagner, 2011-01-14 15:37:00