Php Can';无法正确读取csv(制表符分隔)

Php Can';无法正确读取csv(制表符分隔),php,Php,我有一个简单的csv文件,它是以制表符分隔的,我必须使用它,因为它来自某个地方,我可以读取它并将其插入我的数据库,我使用了一个简单的php代码来读取它 if(($handle = fopen("var/import/MMT29DEC.csv","r"))!==FALSE){ /*Skip the first row*/ fgetcsv($handle, 1000,chr(9)); while(($data = fgetcsv

我有一个简单的csv文件,它是以制表符分隔的,我必须使用它,因为它来自某个地方,我可以读取它并将其插入我的数据库,我使用了一个简单的php代码来读取它

if(($handle = fopen("var/import/MMT29DEC.csv","r"))!==FALSE){
            /*Skip the first row*/
            fgetcsv($handle, 1000,chr(9));
            while(($data = fgetcsv($handle,1000,chr(9)))!==FALSE){
                    print_r($data[0]);
                        }
}
当打印数据时,它显示如下

Array ( [0] => 01SATAPC [1] => 40ATAPC [2] => [3] => 21P [4] => SERIAL ATA POWER CABLE [5] => 0.00 [6] => 2.00 [7] => 0 [8] => Power Supplies [9] => SERIAL ATA POWER CABLE [10] =>
4 TO 15 PIN 160MM
[11] => [12] => [13] => [14] => MELBHO [15] => 0.000 [16] => [17] => Order to Order [18] => 4 [19] => 2013-01-18 ) 

这是期望的结果,但当我使用$data['index']访问特定列值时,例如$data[8]或$data[1],它奇怪地给我垃圾值表示在某些迭代中它给我正确的值,但在10-15行之后,它开始给我一些数字和其他列值。。。。。我不知道这是怎么回事,据我所知,这应该是格式问题,我已尝试在excel中打开文件,它来的罚款

@ravisoni您确定fgetcsv的第二个参数1000比文件中的最长行长吗?尝试将其设置为0,如文档所述[php.net/fgetcsv],看看这是否会产生影响

if(($handle = fopen("var/import/MMT29DEC.csv","r"))!==FALSE){
            /*Skip the first row*/
            fgetcsv($handle, 0,chr(9));
            while(($data = fgetcsv($handle,0,chr(9)))!==FALSE){
                    print_r($data[0]);
                        }
}

看一看这些线,你会在那里得到不想要的结果。它们可能是格式化的吗?@KingCrunch不,它们看起来很好。。。即使$data数组也很好,那么为什么不给出正确的索引值:'(两者应该相同,但请尝试一下。使用“\t”而不是char(9)。@Venu'\t'不起作用…@ravisoni您确定fgetcsv的第二个参数1000比文件中的最长行长吗?请尝试将其设置为0,如文档所述[看看这是否有区别。