PHP代码不能正确parsing我的CSV文件

我有一个CSV文件,我想parsing它使用PHP:

Access_Code,Home_Address, Work_Address 1, 100 Broad St, 100 Main St 2, 200 Broad St, 200 Main St 3, 300 Broad St, 300 Main St 

这是我的代码:

 $file = fopen($target_path,"r"); while(!feof($file)) { $groups2 = fgetcsv($file,","); print_r($groups2); } fclose($file); 

我不想要任何幻想,只是为了弄清楚为什么会发生这种情况:

OUTPUT:

 Array ( [0] => Access_Code [1] => Work_Address [2] => Home_Address 1 [3] => 100 Broad St [4] => 100 Main St 2 [5] => 200 Broad St [6] => 200 Main St 3 [7] => 300 Broad St [8] => 300 Main St ) 

我应该有一个12个对象的数组,不是吗? 为什么我的第一栏被第三栏(即Home_Address 1,200 Main St 3等)吞噬?

谢谢!!

我input了您的示例数据和代码,并返回以下数组。 检查你的数据真的是这种格式。 如果是,使用file()读入一个数组并检查eol字符,因为file()保留了eol字符(参见下面的代码)。

 Array ( [0] => Access_Code [1] => Home_Address [2] => Work_Address ) Array ( [0] => 1 [1] => 100 Broad St [2] => 100 Main St ) Array ( [0] => 2 [1] => 200 Broad St [2] => 200 Main St ) Array ( [0] => 3 [1] => 300 Broad St [2] => 300 Main St ) 

数据:

 Access_Code,Home_Address, Work_Address 1, 100 Broad St, 100 Main St 2, 200 Broad St, 200 Main St 3, 300 Broad St, 300 Main St 

检查eol字符:

 $a = file("../x.txt"); $hex=''; for ($i=0; $i < strlen($a[0]); $i++) { var_dump(ord($a[0][$i])); } 

正如wrikken在评论中提到的,并build议/链接到。

你的行结束是错误的。

行结束通常通过回车+新行\r\n (窗口),只是回车\r (mac)或只是新行\n (linux / unix)来完成。

尝试使用ini_set("auto_detect_line_endings", true); 在PHP的顶部,正如Wrikken链接到这个项目的PHP手册所build议的那样。

如果这样不能解决问题,请检查是否正确设置了分隔符(通常是行尾),在那里创buildCSV文件。