目前我正在开发一个PHP脚本,用于从MySQL数据库中的条目输出CSV文件.我的问题在于如何正确输出值.MySQL数据库中的许多条目都包含逗号和引号,如果我只是将它们清楚地打印到文件中,它会破坏CSV文件的格式.
我知道我可以在引号中包围文本,但包含引号的条目会弄乱文件的格式.
我的问题是,我该怎么做才能防止这种情况发生?
另外,新行会影响文件的解释吗?
另外,我宁愿不在PHP中使用fputcsv函数.我试图让PHP脚本输出文件的内容(带有适当的标题),而不是写入新文件.
提前致谢!
此致,celestialorb
我认为你对fputcsv的解雇可能为时过早.在fputcsv手册的注释中,有一个例子,他们使用fputcsv输出到浏览器而不是文件. http://php.net/manual/en/function.fputcsv.php
这是代码,加上一些标题,表明它确实提示用户下载csv文件.
$mydata = array(
array('data11', 'data12', 'data13'),
array('data21', 'data22', 'data23'),
array('data31', 'data32', 'data23'));
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"my-data.csv\"");
outputCSV($mydata);
function outputCSV($data) {
$outstream = fopen("php://output", 'w');
function __outputCSV(&$vals, $key, $filehandler) {
fputcsv($filehandler, $vals, ';', '"');
}
array_walk($data, '__outputCSV', $outstream);
fclose($outstream);
}
Run Code Online (Sandbox Code Playgroud)