PHP 有 a function for converting CSV strings to PHP arrays,但不是反之亦然的功能,所以我写了一个:
function echocsv(array $arr, $quo = '"', $sep = ',') {
$escape = $quo . $quo;
foreach($arr as &$val) {
if(strpos($val, $quo) !== false) {
$val = $quo . str_replace($quo, $escape, $val) . $quo;
}
}
echo implode($sep, $arr) . PHP_EOL;
}
有什么我忽略的吗?来自 wikipedia它基本上说引号应该用另一个引号转义,这就是它的全部内容。 .CSV 文件需要能够在 MS Excel 中打开。
我的原始测试似乎表明它在工作。
(我回显它而不是返回一个字符串,因为我要将它直接传输到浏览器)
最佳答案
$stdout = fopen('php://output','w'); // 'stdout' is for CLI, 'output' is for Browser
fputcsv($stdout, array('val,ue1','val"ue2','value3','etc'));
fflush($stdout); // flush for fun :)
fclose($stdout);
^ 这会将 CSV 文件输出到浏览器。
关于php - 我的 array to csv 函数是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8513779/