2011-01-14 8 views
25

Ich brauche einen Weg, um die fputscv Funktion schreiben Daten in den Browser on-the-fly anstatt eine temporäre Datei zu erstellen, Speichern von Daten in diese Datei und tun eine echo file_get_contents(). Hilfe!!!Wie fputcsv "echo" die Daten machen

Antwort

37

diese Gefunden auf der PHP-Dokumentation Webseite, erster Kommentar unter der Funktionsreferenz:

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

Und eine zweite 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); 

hoffte, das hilft!

BTW die PHP-Dokumente sollten immer Ihre erste Anlaufstelle sein, wenn Sie versuchen, die Dinge herauszufinden. :-)

+0

Verflixt ... wie kann ich vermisse die !!! –

+1

die outputCSV() von der PHP-Website funktioniert nicht, hast du das überhaupt getestet? –

+4

Ich habe diese Frage vor 4+ Jahren beantwortet, vielleicht hat sich etwas geändert? Ich kann nicht ehrlich sagen, ob ich es versucht habe oder nicht, aber ich vermute, dass ich es getan hätte. Fühlen Sie sich frei, zu erweitern, was genau nicht funktioniert, anstatt Ihre leere Antwort ohne Details, und vielleicht werde ich weiter darüber nachdenken. –

2

Als Originalfragesteller wollte „on the fly im Browser schreiben“, vielleicht ist erwähnenswert, (wie mein Fall war und niemand erwähnt es), dass, wenn Sie eine Datei erzwingen wollen Name und ein Dialog auffordert, eine Datei im Browser herunterzuladen, müssen Sie die richtigen Header gesetzt, bevor irgendetwas mit fputcsv ausgeben:

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