PHP文件生成CSV,如何正确输出文本

cel*_*orb 2 php csv format

目前我正在开发一个PHP脚本,用于从MySQL数据库中的条目输出CSV文件.我的问题在于如何正确输出值.MySQL数据库中的许多条目都包含逗号和引号,如果我只是将它们清楚地打印到文件中,它会破坏CSV文件的格式.

我知道我可以在引号中包围文本,但包含引号的条目会弄乱文件的格式.

我的问题是,我该怎么做才能防止这种情况发生?

另外,新行会影响文件的解释吗?

另外,我宁愿不在PHP中使用fputcsv函数.我试图让PHP脚本输出文件的内容(带有适当的标题),而不是写入新文件.

提前致谢!

此致,celestialorb

Bob*_*ley 6

我认为你对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)