使用通过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脚本没有正确检测到新行吗?如果是,是否可以选择修复此行为?
答案 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