您可以将该值括在双引号中:
我喜欢尽可能使用数组,而不是连接字符串:
$rawCsv = array();
while ($result = $data->fetch_assoc()) {
if (count($rawCsv) === 0)
$rawCsv[] = '"'.implode('","', array_keys($result)).'"';
$rawCsv[] = '"'.implode('","', $result).'"';
}
$csvString = implode("\n", $rawCsv);
不过,这两种方法在数据中都会有不同的字符 - 双引号。 考虑到这一点,更好的选择是使用 fopen 并创建 CSV 数据,而您无需考虑它。
如果您打算立即提供下载的 CSV 数据,则无需同时使用文件,只需将黄油转储到输出中即可:
ob_start();
$file_handle = fopen("php://output", 'w');
...如果您想要安装文件,请在所需的输出文件上使用 fopen 并跳过调用
接下来,组装您的数据:
fputcsv($file_handle, array(
'Your',
'headings',
'here'
));
while ($result = $data->fetch_assoc()) {
fputcsv($file_handle, array(
$result['Your'],
$result['data'],
$result['"here"']
));
}
fclose($file_handle);
...如果您使用的是文件,那么就一切就绪! 如果您使用输出缓冲区(不使用文件),则可以抓取 CSV 数据并将其直接发送到浏览器:
$csv = ob_get_clean();
echo $csv; // should send headers first!
尽管某些框架/应用程序在内部使用输出缓冲,但要小心输出缓冲。 如果遇到问题,请尝试使用文件。 如果该文件有效,则您的框架可能已经在输出缓冲区中执行某些操作。
文档