我正在处理一个CSV文件和PHP5,但是我不完全理解我所看到的。该文件是当我在一个文本编辑器打开它,如下所示:Fgetcsv初始行读取
"Jun 23,2010 21:40","City1","Location1","0 0 0 "
"Jun 23,2010 21:41","City2","Location1","0 0 0 "
我得到了来自该代码的输出:
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);
这是输出:
5 fields in line 1:
"Jun 23
2010 21:40"
City1
Location1
0 0 0
4 fields in line 2:
Jun 23,2010 21:41
City2
Location1
0 0 0
如您所见,在第一行fgetcsv跳过外壳字符并将逗号读作第一个字段,而第二个字段ne正确读取,然后在所有行之后进行读取。
所以我错过了什么,或者这是一个错误,如果它是一个错误,除了重写原始文件之外,什么是一些可能的解决方案?
经过检查围绕代码,我认为你是对的,并且在实际文件中可能会搞砸fgetcsv。我复制并粘贴整个文件在一个文本编辑器到一个新的文件,跑了,没有问题。该文件正在由iMacoros脚本编写,并以某种方式混淆了二进制级别的格式,因为在文本中它们看起来完全相同。 – ruskiar 2010-07-02 21:27:01
挖掘更多一点,事实证明fgetcsv不喜欢UTF-8编码,所以在一个小文件转换后,一切都像一个魅力。 – ruskiar 2010-07-02 21:53:47