读写文件(csv)

后台读取csv文件一键发货

private function import($id) {
//传入文件id
        if(!$id){
            return false;
        }
        $fileName = dr_get_file($id);
        // 获取文件资源
        $file = fopen($fileName, 'r');
        // 转编码格式
        $_func = function ($data) {
            return array_map(function ($value) {
                return trim(mb_convert_encoding($value, 'UTF-8', 'gb2312'));
            }, $data);
        };
        // 空读一行 跳过表头
        fgetcsv($file);
        //读数据并转码
        while ($row = fgetcsv($file)) {
            $row = $_func($row);
            $data = [
    	            'id' =>  $row[0],
    	            'shipping_name' => $row[2],
    	            'shipping_phone' => $row[3],
    	            'shipping_sn' =>$row[4],
    	            'shipping_city'=> $this->lengcode($row[5])[0],
    	            'shipping_address' =>$this->lengcode($row[5])[1],
                ];
            // 更新订单主表的状态和时间
            To Do some code
            }
       	}
**这边是写的一个切割字符的方法**
    /**
     * $x 所需匹配的字段;
     * substr  [每个字长度是3] 
     * mb_strlen第二个参数可根据编码格式选择字的长度
    */ 	
	private function lengcode($x){
        $y=strpos($x,'市')+3 ;
        // 市 之后的文字
        $z = substr($x,$y);
        // 市之前的文字
        $xx= substr($x , 0 , $y);
        return [$xx,$z];
        }
     
      ![ lengcode case  :](https://img-blog.csdnimg.cn/2019072517365742.png)
      //测试时文件的编码方式要是UTF8  
		$str='中文a字1符';  
		echo strlen($str).'<br>';//14  
		echo mb_strlen($str,'utf8').'<br>';//6  
		echo mb_strlen($str,'gbk').'<br>';//8  
		echo mb_strlen($str,'gb2312').'<br>';//10  
		在strlen计算时,对待一个UTF8的中文字符是3个长度,所以“中文a字1符”长度是3*4+2=14,在mb_strlen计算时,选定内码为UTF8,则会将一个中文字符当作长度1来计算,所以“中文a字1符”长度是6 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值