Potrzebuję sposobu, aby funkcja fputscv
zapisywania danych do przeglądarki w locie, zamiast tworzenia pliku tymczasowego, zapisywanie danych do tego pliku i wykonanie echo file_get_contents()
. Wsparcie!!!Jak wykonać fputcsv "echo" danych
25
A
Odpowiedz
37
Znalazłem to na stronie PHP docs, pierwszy komentarz pod numerem funkcji:
function outputCSV($data) {
$outstream = fopen("php://output", 'w');
function __outputCSV(&$vals, $key, $filehandler) {
fputcsv($filehandler, $vals, ';', '"');
}
array_walk($data, '__outputCSV', $outstream);
fclose($outstream);
}
I druga opcja:
$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);
Nadzieja to pomaga!
Przy okazji dokumentacja PHP powinna być zawsze Twoim pierwszym przystankiem podczas próby zrozumienia. :-)
-2
http://www.codehive.net/PHP-Array-to-CSV-1.html da ci funkcję, która spełnia wymagania, aby nie używać systemu plików.
14
<?php
$out = fopen('php://output', 'w');
fputcsv($out, array('this','is some', 'csv "stuff", you know.'));
fclose($out);
?>
2
Jako oryginalny Asker chciał „pisać do przeglądarki w locie”, może warto zauważyć (jak moja sprawa i nikt nie wspomniał o tym), że jeśli chcesz, aby wymusić plik Nazwa i dialogowe z prośbą o pobranie pliku w przeglądarce, należy ustawić odpowiednie nagłówki przed wyprowadzanie niczego z fputcsv
:
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=myFile.csv');
drát ... jak mogłam przegapić !!! –
outputCSV() z witryny PHP nie działa, czy w ogóle to testowałeś? –
Odpowiedziałem na to pytanie 4+ lat temu, może coś się zmieniło? Nie mogę uczciwie powiedzieć, czy spróbowałem, czy nie, ale podejrzewam, że bym to zrobił. Możesz rozwinąć to, co dokładnie nie działa, zamiast pustej odpowiedzi bez szczegółów, a może zajrzę w to dalej. –