PHP和CSV文件 - 如何检测行尾?

时间:2012-12-20 17:19:31

标签: php file csv newline

  

可能重复:
  how to extract data from csv file in php

我在XLS中有一些数据,我将它们保存为CSV,分隔符为**逗号*。 然后我尝试从此CSV文件加载数据:

$input = explode("\r\n", fread($file, filesize("my_data.csv")));
print_r($input);

输出:

Array ( [0] => data from the CSV file)

这是问题 - 在数组中始终只是一个项目,其中打印出CSV文件中的所有数据。怎么可能?为什么在数组中没有与CSV文件中的行一样多的项目?

另外,我尝试将"\r\n"更改为“\ n”,但它是一样的。

我要做的是 - 从CSV文件中加载每一行,然后每行进行处理。

文件示例:

a,b,c,d
e,f,g,h

输出:

a,b,c,d e,f,g,h

2 个答案:

答案 0 :(得分:4)

我建议使用php的内置csv文件阅读功能fgetcsv(),而不是创建自己的:http://php.net/manual/en/function.fgetcsv.php

 if (($handle = fopen($file, "r")) !== FALSE) {
     while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $row = implode (",",$data); //puts back together the row from the csv
        echo $row. "\n"; //assuming you want a visual linebreak on console, add the \n
     }
    fclose($handle);
 }  

答案 1 :(得分:0)

我是如何解决这个问题的:

在XLS文件中,在将文件导出为CSV之前,我在工作表的末尾添加了一个包含char '的列。