fgetcsv不读取整个CSV文件行

时间:2016-03-09 16:11:44

标签: php csv

我有一个csv文件,如下所示:

CODE;GROEP;SOORT;VOLGNR;REFERENCE;OMSCHRIJVING;PRIJS;STOCK;KOSTCOD1;KOSTBED1;KOSTCOD2;KOSTBED2;KOSTCOD3;KOSTBED3;KOSTCOD4;KOSTBED4;KOSTCOD5;KOSTBED5;EANCODE
101BE1573098;101;BE;1573098;A3L791B50CM-GRY;Belkin Patch Cable Cat5E assembled 0.5m;0,68;0;;;;;;;;;;;
101DE083104;101;DE;083104;083104;Kabel USB micro -B stekker USB-A 2.0 OTG 11cm;1,52;0;;;;;;;;;;;
101DE83510;101;DE;83510;83510;DELOCK Cable RJ45 Cat.5e SFTP angled / angled 0.5 m;2,21;0;;;;;;;;;;;4043619835102
101DE83511;101;DE;83511;83511;DELOCK Cable RJ45 Cat.5e SFTP angled / angled 1 m;2,81;0;;;;;;;;;;;4043619835119
101DE83512;101;DE;83512;83512;DELOCK Cable RJ45 Cat.5e SFTP angled / angled 2 m;4,1;0;;;;;;;;;;;4043619835126

我使用以下代码访问CSV文件

$fh = fopen($local_file, 'r');

if ($fh) {
$line = 0;
while ( ($row = fgetcsv($fh)) !== false ) {

    if ($line == 0) {
        $line++;
        continue;
    }
    $values = explode( ';', $row[0] );
    echo $row[0];
    echo "</br>";
}

当我执行时,我得到了这个:

101BE1573098;101;BE;1573098;A3L791B50CM-GRY;Belkin Patch Cable Cat5E assembled 0.5m;0
101DE083104;101;DE;083104;083104;Kabel USB micro -B stekker USB-A 2.0 OTG 11cm;1
101DE83510;101;DE;83510;83510;DELOCK Cable RJ45 Cat.5e SFTP angled / angled 0.5 m;2
101DE83511;101;DE;83511;83511;DELOCK Cable RJ45 Cat.5e SFTP angled / angled 1 m;2
101DE83512;101;DE;83512;83512;DELOCK Cable RJ45 Cat.5e SFTP angled / angled 2 m;4

正如您所看到的,行结束于&#39;,&#39;在专栏&#39; PRIJS&#39;。有谁知道为什么会这样做?

1 个答案:

答案 0 :(得分:1)

基于http://php.net/manual/en/function.fgetcsv.php

fgetcsv可以根据不同的分隔符进行解析(第3个参数) 例如:fgetcsv($fh, 0, "delimiter")

所以要解决这个问题:

<?php
    while ( ($row = fgetcsv($fh, 0, ";")) !== false ) {
        // ...
    }