php将csv数据读入单行

时间:2016-01-08 19:48:24

标签: php csv

奇怪的是PHP将Excel生成的CSV文件读入一行。代码是:

if ($file) {
                while (($line = fgets($file)) !== false) {
                    print '<div>'.$line.'</div>'."<br/>";
                }

            } else {
                // error opening the file.
            }

            fclose($file);

CSV

Name, City
Jon,Paris
Doe,Madrid

2 个答案:

答案 0 :(得分:2)

在阅读文件之前添加此代码。

ini_set("auto_detect_line_endings", true);
  

启用后,PHP将检查fgets()和file()读取的数据,以查看它是使用Unix,MS-Dos还是Macintosh行结束约定。

这使PHP能够与Macintosh系统互操作,但默认为Off,因为在检测第一行的EOL约定时,性能会受到很小的影响,并且因为在Unix系统下使用回车符作为项目分隔符的人会体验非向后兼容的行为。

答案 1 :(得分:1)

最有可能的是,PHP无法正确检测文件中的行结尾。 fgets文档指出了这一点。

您可能希望编写如下代码:

$oldLineEndings = ini_set('auto_detect_line_endings', true);

//your while loop here

ini_set('auto_detect_line_endings', $oldLineEndings);

如果您需要实际解析csv,您可能还需要查看fgetcsv