CSV导入; 所有值都是一行

Mar*_*ean 7 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);
}
Run Code Online (Sandbox Code Playgroud)

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

为什么是这样?我的PHP脚本没有正确检测到新行吗?如果是这样,是否有选项可以解决此问题?

Chr*_*isR 13

auto_detect_line_endings ini设置为true:

ini_set('auto_detect_line_endings', true);
Run Code Online (Sandbox Code Playgroud)


小智 7

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

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