美文网首页
php fgetcsv读取数据不全

php fgetcsv读取数据不全

作者: 韩小禹 | 来源:发表于2019-09-27 10:36 被阅读0次

    php 的fgetcsv函数读取csv文件,如果都是中文且数据很多,会导致读取数据不全的问题,下面函数是网上找的一个解决方法。

    public function fgetcsv_reg(& $handle, $length = null, $d = ',', $e = '"') { 
            $d = preg_quote($d); 
            $e = preg_quote($e); 
            $_line = ""; 
            $eof=false; 
            while ($eof != true) { 
                $_line .= (empty ($length) ? fgets($handle) : fgets($handle, $length)); 
                $itemcnt = preg_match_all('/' . $e . '/', $_line, $dummy); 
                if ($itemcnt % 2 == 0){
                    $eof = true; 
                }
            }
            $_csv_line = preg_replace('/(?: |[ ])?$/', $d, trim($_line)); 
            $_csv_pattern = '/(' . $e . '[^' . $e . ']*(?:' . $e . $e . '[^' . $e . ']*)*' . $e . '|[^' . $d . ']*)' . $d . '/'; 
            preg_match_all($_csv_pattern, $_csv_line, $_csv_matches); 
            $_csv_data = $_csv_matches[1]; 
            for ($_csv_i = 0; $_csv_i < count($_csv_data); $_csv_i++) { 
                $_csv_data[$_csv_i] = preg_replace('/^' . $e . '(.*)' . $e . '$/s', '$1', $_csv_data[$_csv_i]); 
                $_csv_data[$_csv_i] = str_replace($e . $e, $e, $_csv_data[$_csv_i]); 
            } 
            return empty ($_line) ? false : $_csv_data; 
        } 
    

    相关文章

      网友评论

          本文标题:php fgetcsv读取数据不全

          本文链接:https://www.haomeiwen.com/subject/vnvouctx.html