以下是我的CSV文件。如您所见,它是五列,在第五列上有多个选项也以逗号分隔。
column 1,column 2,column 3,column 4,column 5
value,value,value,value,"value, value2, value3"
val,val,val,val,"opt, opt2, opt3"
以下是我正在使用解析上面的代码......
$csvData = file_get_contents('test2.csv');
$csvNumColumns = 5;
$csvDelim = ',';
$csvEnclosure = '"';
$results = array_chunk(str_getcsv($csvData, $csvDelim, $csvEnclosure), $csvNumColumns);
print_r($results);
我的print_r的输出如下......
Array
(
[0] => Array
(
[0] => column 1
[1] => column 2
[2] => column 3
[3] => column 4
[4] => column 5
value
)
[1] => Array
(
[0] => value
[1] => value
[2] => value
[3] => value, value2, value3
val
[4] => val
)
[2] => Array
(
[0] => val
[1] => val
[2] => opt, opt2, opt3
)
)
正如您所看到的,由于某种原因,这未被正确解析。我想我可以通过新行再次用逗号来爆炸它......但是,我想理解为什么这不起作用。
答案 0 :(得分:0)
str_getcsv()
仅用于返回一行,但您想要所有行。相反,在循环中使用fgetcsv。由于fgetcsv使用文件指针,它可以跟踪它停止解析前一行的位置,因此下次调用它时,解析将继续在正确的位置(这是下一个csv行)。