php csv文件导入

    public function Import_goods()
    {

    
     if(!empty($_FILES)){
     if(@is_uploaded_file($_FILES['upfile']['tmp_name'])){
            $http='http://'.$_SERVER['HTTP_HOST'].'/shop/shop_img'; 
            $upfile=$_FILES["upfile"];  //获取数组里面的值 
            $name=$upfile["name"];//上传文件的文件名 
            $type=$upfile["type"];//上传文件的类型 
            $size=$upfile["size"];//上传文件的大小 
            $tmp_name=$upfile["tmp_name"];//上传文件的临时存放路径   
            // echo dirname(__FILE__).'/excel/'.$name;die;
            $url='./excel/'.time().$name;
            move_uploaded_file($tmp_name,$url);//将上传到服务器临时文件夹的文件重新移动到新位置
            // echo $url;die;
            $error=$upfile["error"];//上传后系统返回的值 
            if($error==0){ 
                // echo "文件上传成功啦!<br>";
                 setlocale(LC_ALL, 'zh_CN');
            $row=0;
            $list=array();
                         if (($handle = $this->fopen_utf8($url)) !== FALSE) {
                        while (($data = fgetcsv($handle, 10000000, "\t")) !== FALSE) {//循环行数
                                        $num = count($data);
                                        // echo "<p> $num fields in line $row: <br /></p>\n";
                                        
                                        $row++;
                                        //print_o($data);//查看表头
                                        //$c取第几列,$num总列数
                                        for ($c=0; $c < $num; $c++) {
                                                     if ($row == 1 || $row == 3) {
                                                  continue;//过滤无用数据
                                                     }
                                            // echo $data[$c]. "<br />\n";
                                            // $list[$row][]= iconv('UCS-2BE','GBK',$data[$c]);
                                            // echo $c;
                                            //组合二维
                                            if($row ==2){
                                            $list[$row][]=$data[$c];
                                            }else{
                                                $list[$row][$list[2][$c]]=$data[$c];
                                                
                                            }
                                        }
                        }
                                    fclose($handle);
                                }
                                unset($list[2]);
                                sort($list);
   
                                   
                               foreach ($list as $key => $value) {
                                       //循环你的业务逻辑
                                    
                               }
            }else{
                echo "上传失败";die;
            }
    
        }
        
    
                      
            
        }
       
        
    }
//读取csv数据乱码转换中文
  function fopen_utf8($filename){
                        $encoding='';
                        $handle = fopen($filename, 'r');
                        $bom = fread($handle, 2);
                        // fclose($handle);
                        rewind($handle);
                        
                        if($bom === chr(0xff).chr(0xfe) || $bom === chr(0xfe).chr(0xff)){
                        // UTF16 Byte Order Mark present
                        $encoding = 'UTF-16';
                        } else {
                        $file_sample = fread($handle, 1000) + 'e'; //read first 1000 bytes
                        // + e is a workaround for mb_string bug
                        rewind($handle);
                        
                        $encoding = mb_detect_encoding($file_sample , 'UTF-8, UTF-7, ASCII, EUC-JP,SJIS, eucJP-win, SJIS-win, JIS, ISO-2022-JP');
                        }
                        if ($encoding){
                        stream_filter_append($handle, 'convert.iconv.'.$encoding.'/UTF-8');
                        }
                        return ($handle);
                        }

 

 

 

posted @ 2020-08-07 23:30  安久  阅读(285)  评论(0)    收藏  举报