我有一个昏迷的字符串。我需要将其转换为数组,并能够将其保存为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
答案 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);