在PHP中编写CSV时强制换行

时间:2011-07-21 14:04:21

标签: php csv newline fwrite

$out_text = "\r\n";
$out_text_body = implode("\r\n", $output_array);
$out_text = $out_text . $out_text_body;
fwrite($han, $out_text);

上面的代码成功地将一堆CSV行存储在一个由新行字符分隔的文件中。正在写入的文件包含一堆CSV行。

问题在于,尽管预先要求使用额外的“\ r \ n”来写入文本,但在新编写的CSV中,新块始终与旧块开始在同一行上。 implodes变量工作正常。

难以理解,但一直看着它,我看不出这个问题,希望这很简单。

2 个答案:

答案 0 :(得分:3)

您可以先写一行:

fwrite($han, PHP_EOL);
fwrite($han, $out_text);

作为助手,虽然技术上没关系,但我更有可能这样做:

fwrite($han, PHP_EOL);
foreach( $out_array as $out_text )
{
    fwrite($han, $out_text);
}

我通常会保留将大块文本(包括换行符)写入file_put_contents。从技术上讲,这并不重要,上面的内容更符合PHP 4(虽然我怀疑我们不再关心它了),但它确实有更标准的“感觉”。

答案 1 :(得分:3)

为什么不使用fputcsv()功能?

它应该为你处理所有这些事情。