How to make fputcsv "echo" the data

Salman A picture Salman A · Jan 14, 2011 · Viewed 23.5k times · Source

I need a way to make the fputscv function write data to the browser on-the-fly instead of creating a temporary file, saving data into that file and doing a echo file_get_contents().

Answer

Seb Barre picture Seb Barre · Jan 14, 2011

Found this on the PHP docs website, first comment under the function reference:

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

And a second option:

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

Hope this helps!

BTW the PHP docs should always be your first stop when trying to figure things out. :-)