如何将CSV数据写入变量?

时间:2014-03-28 16:25:59

标签: php csv export-to-csv

我正在从我的数据库中读取一些数据,我想将其转换为要显示的csv。但是,我不想写入文件 - 有没有办法在不使用临时文件的情况下将数组数据转换为csv字符串?

1 个答案:

答案 0 :(得分:0)

是的,有。可以使用php://memory,就像它是文件输出流一样,尽管它实际上只写入内存而不是文件。

例如,要将数组$data转换为csv格式$rows

$rows = array();
$fd = fopen('php://memory','rw');
foreach($data as $datum) {
    fputcsv($fd, $datum);
    rewind($fd);
    $rows[] = trim(fgets($fd));
    rewind($fd);
}
fclose($fd);

在这里你可以看到我打开内存进行读/写,然后对于每个数据集,我将数据写为csv - 然后倒回到内存的开头 - 然后读取内存的内容。请注意,fputcsv总是使用换行符终止该行,这就是为什么我可以使用fgets来读取行而不必担心溢出。如果您要存储包含换行符的数据,则可能需要稍微更改一下,因为fgets当时不会工作,您需要进行更精细的检查/验证,以及{{1}的最大大小}在php.ini中定义。