fputcsv 意外行为

fputcsv unexpected behavior

看看这个代码示例:

$store = array('This is something \" "special"!', 'Something else "special"!');
$ff = fopen('/tmp/aaaa.csv', 'w');
fputcsv($ff, $store);
fclose($ff);

结果是这样的:

"This is something \" ""special""!","Something else ""special""!"

令我困扰的是 \" 保持不变。我希望它变成 \"" 或至少是 ""。我错了吗?

在任何情况下,此行为都会破坏 csv,例如,postgresql 拒绝导入此类 csv...

fputcsv 函数默认转义反斜杠字符。您可以查看手册 $escape_char = "\"

如果您不想转义反斜杠字符,则可以指定其他字符,如下所示:

fputcsv($ff, $store, ',', '"', '!');

这将为您提供所需的输出。