CSV导入;所有值都是一行

时间:2011-03-18 20:34:55

标签: php csv

使用通过PHP表单上传的CSV文件时遇到问题。这是代码:

$row = 1;
if (($handle = fopen($_FILES['csv']['tmp_name'], "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        echo "<p> $num fields in line $row: <br /></p>\n";
        $row++;
        for ($c=0; $c < $num; $c++) {
            echo $data[$c] . "<br />\n";
        }
    }
    fclose($handle);
}

唯一的问题是,当我在查询变量$data时,看起来CSV文件的内容被写入一行而不是多行。结果,我获得了228个列值的数组。

这是为什么?我的PHP脚本没有正确检测到新行吗?如果是,是否可以选择修复此行为?

2 个答案:

答案 0 :(得分:13)

auto_detect_line_endings ini设置为true:

ini_set('auto_detect_line_endings', true);

答案 1 :(得分:7)

最有可能的问题是源数据中的行结尾。您是否可以制作包含多个列和行的测试CSV文件来确认或删除您正在测试的数据?

另请参阅:http://www.php.net/manual/en/filesystem.configuration.php#ini.auto-detect-line-endings