因此,我的代码使用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) . '"';

您可能希望将其放在所有行的循环中。

09-25 18:09