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
25
A
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. :-)
-2
http://www.codehive.net/PHP-Array-to-CSV-1.html wird Ihnen eine Funktion geben, die den Anforderungen entspricht, das Dateisystem nicht zu verwenden.
14
<?php
$out = fopen('php://output', 'w');
fputcsv($out, array('this','is some', 'csv "stuff", you know.'));
fclose($out);
?>
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');
Verflixt ... wie kann ich vermisse die !!! –
die outputCSV() von der PHP-Website funktioniert nicht, hast du das überhaupt getestet? –
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. –