如何防止php fgetcsv跳过第一行

时间:2015-06-02 10:36:08

标签: php fopen skip fgetcsv

我有这个函数,它逐行读取csv文件并在每行的第一列中查找特定标签,然后如果找到label,则将此找到的标签旁边的所有列读入数组,直到列值为空。它曾经工作正常,但最近我注意到它开始跳过文件的第一行。

如果我在文件的顶部添加一个空行,它会很好地读取行,但是如何从第一行读取它呢?

我使用PHP版本5.5.18并且php版本在不久前升级了,如果是PHP版本错误降级版本不是我的解决方案...

是否有任何替代功能或者可能是强制它从第一行读取的方法,或者可能是关于如何实现这一目标的建议?

function getDataByLabel($label){

   if(($filePointer = fopen($this->path, "r"))!==FALSE){

       //reading each line
        while (($data = fgetcsv($filePointer, 0, ",",'"')) !== FALSE) {

            if(trim(strtolower($data[0]))==trim(strtolower($label))){ 

               $i=0;
               $c=1;

        // if column is not empty we add this value to an array
               while(!empty($data[$c])){
                    $label = trim(ucfirst(strtolower($label)));
                    $this->param[$label][$i] = $data[$c];
                    $i++;
                    $c++;
                }

            }

        }
    }
}

1 个答案:

答案 0 :(得分:-1)

将csv文件另存为带有签名的UTF8-时,它将跳过第一行。使用Emeditor保存为无签名的UTF8,不会跳过第一行。