因此,我的代码使用PHP的内置 fputcsv
函数生成了一个CSV文件。
对于定界符,我使用','
(逗号)。
对于 shell ,我使用'"'
(双引号)。
但是,当我尝试类似
fputcsv($file,array('a','b',"long string, with commas",NULL,''),',','"');
它输出
a,b,"long string, with commas",,
但我想输出
"a","b","long string, with commas","",""
有没有简单的方法来解决这个问题,还是我必须写一个
fputcsv
的替代品? 最佳答案
对于CSV文件,这通常不是问题。
如果值不明确,则fputcsv会将引号引起来。例如,
a,b,"long string, with commas",,
不是模棱两可的,但是,
a,b,long string, with commas,,
是,并且在大多数情况下(全部阅读),CSV阅读器会将其解释为具有5个以上的字段。
CSV解析器即使不带引号也可以接受字符串文字。
如果仍要在值周围加上引号,则以下代码片段将做到这一点。它不会转义字符串中的引号-该练习留给读者:
$row = '"' . implode('", "', $rowitems) . '"';
您可能希望将其放在所有行的循环中。