2011-01-14 10 views

risposta

37

trovato questo sul sito web documenti PHP, primo commento sotto il riferimento alla funzione:

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

E una seconda opzione:

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

Spero che questo aiuti!

BTW i documenti PHP dovrebbero essere sempre la prima tappa quando si cerca di capire le cose. :-)

+0

Accidenti ... come potevo perdere questa !!! –

+1

l'outputCSV() dal sito Web di PHP non funziona, l'hai mai provato? –

+4

Ho risposto a questa domanda 4+ anni fa, forse qualcosa è cambiato? Non posso onestamente dire se ci ho provato o no, ma sospetto che lo farei. Sentiti libero di espandere ciò che non funziona esattamente al posto della tua risposta vuota senza dettagli, e forse lo esaminerò ulteriormente. –

2

Come il richiedente originale voluto "scrivere al browser al volo", forse è degno di nota (come era il mio caso e nessuno ne ha parlato) che, se si vuole forzare un file nome e una finestra di dialogo che chiede di scaricare un file nel browser, è necessario impostare le intestazioni appropriate prima di emettere qualsiasi cosa con fputcsv:

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