在csv文件中添加换行符

时间:2016-04-05 12:46:03

标签: php

我有一个昏迷的字符串。我需要将其转换为数组,并能够将其保存为csv文件。

$fp = fopen("abc.csv", "w");
$str = "FRUIT, STOCKS, TYPE\n lychee, instocks, B-type\n strawberry, N/A,A-type\n";

$data = str_getcsv($str);
fputcsv($fp, $data);
fclose($fp);

目前它将整个字符串输出为一行。

预期的csv输出:

FRUIT,       STOCKS,      TYPE
lychee,      instocks,    B-type
strawberry,  N/A,         A-type

4 个答案:

答案 0 :(得分:2)

您有两个分隔符(换行符和逗号),因此您希望运行该函数两次。虽然杰伊指出,你可能不需要foreach,因为它已经用逗号分隔了。

$rows = str_getcsv($str, PHP_EOL);
foreach($rows as $row) {
    $data = str_getcsv($row);
    fputcsv($fp, $data);
}

答案 1 :(得分:2)

对于您的确切字符串,您需要执行此操作:

file_put_contents('abc.csv', "FRUIT, STOCKS, TYPE\n lychee, instocks, B-type\n strawberry, N/A,A-type\n");

您当前代码失败的原因是fputcsv()函数正在获取您的值并根据需要对它们进行双引号。

使用文本编辑器而非电子表格查看器打开您的CSV文件,您将看到我在说什么。

答案 2 :(得分:1)

您可以首先使用断行分隔符分隔每一行,然后使用逗号分隔来分隔列的每个值,如示例所示。

使用任何php函数时,在break line delimiter(“\ n”)中使用双引号非常重要。

我建议使用trim功能删除空格。

$fp = fopen("abc.csv", "w");
$str = "FRUIT, STOCKS, TYPE\n lychee, instocks, B-type\n strawberry, N/A,A-type\n";

$data = str_getcsv($str,"\n");

foreach($data as $line){
    fputcsv($fp, str_getcsv($trim($line)));
}

fclose($fp);

问候!

答案 3 :(得分:0)

尝试

$fp = fopen("abc.csv", "w");
$array= array("FRUIT,STOCKS,TYPE","lychee,instocks,B-type","strawberry, N/A,A-type"); 
foreach ($array as $row) {               
    fwrite($fp, $row . "\r\n");
}
fclose($fp);