Подтвердить что ты не робот

Как сделать fputcsv "эхо" данными

Мне нужно, чтобы функция fputscv записывала данные в браузер на лету вместо создания временного файла, сохраняя данные в этом файле и делая echo file_get_contents(). Помощь!!!

4b9b3361

Ответ 1

Обнаружено это на веб-сайте документации PHP, первый комментарий по ссылке функции:

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

И второй вариант:

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

Надеюсь, это поможет!

Кстати, PHP-документы всегда должны быть вашей первой остановкой, пытаясь понять, что происходит.: -)

Ответ 3

Поскольку первоначальный искатель хотел "написать браузеру на лету", может быть стоит отметить (как и мой случай, и никто не упомянул об этом), что если вы хотите принудительно ввести имя файла и диалоговое окно с просьбой загрузить файл в браузере вы должны установить правильные заголовки перед выводом чего-либо с помощью fputcsv:

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

Ответ 4

http://www.codehive.net/PHP-Array-to-CSV-1.html предоставит вам функцию, которая соответствует требованиям, не использующим файловую систему.