【发布时间】:2010-03-04 10:02:46
【问题描述】:
我使用 fputcsv 生成 csv 文件,它工作得很好,但是当我在记事本 (Windows) 中查看 csv 文件时,没有新行。所有行都在 1 行中,并且应该在换行符的位置有一个 sqaure(损坏的字符)。例如,Mac 上的其他编辑器可以正确显示带有中断的行。
有什么办法可以解决这个问题,因为需要导入 CSV,而且导入器也看不到换行符。
【问题讨论】:
我使用 fputcsv 生成 csv 文件,它工作得很好,但是当我在记事本 (Windows) 中查看 csv 文件时,没有新行。所有行都在 1 行中,并且应该在换行符的位置有一个 sqaure(损坏的字符)。例如,Mac 上的其他编辑器可以正确显示带有中断的行。
有什么办法可以解决这个问题,因为需要导入 CSV,而且导入器也看不到换行符。
【问题讨论】:
http://bugs.php.net/bug.php?id=46367
这是 PHP 中一个已知且未修复的错误。
在他们修复它之前,请尝试使用 fwrite($fp, '"'.implode('","', str_replace('"', '""', $data_array)).'"'.PHP_EOL);
【讨论】:
尝试使用 Notepad++,它可以更正确地处理 \n 换行符。
另外,请参阅此响应客栈fputcsv 文档:http://lv.php.net/manual/en/function.fputcsv.php#90883
【讨论】:
将\r\n 放在代码中每一行的末尾。
其他快速修复: 在写字板中打开生成的文件,应该可以正常显示,按Cntr+S,现在在记事本中打开,它应该也可以正常显示。
编辑:
根据下面的cmets,修改你的代码如下:
$orders_newlines = array();
foreach($orders as $value)
{
$orders_newlines[] = $value . "\r\n";
}
现在在循环中使用$orders_newlines 变量而不是$orders。
希望对您有所帮助。
【讨论】:
fputcsv 中使用$orders_newlines 变量而不是$orders 变量。