zoukankan      html  css  js  c++  java
  • php 生成读取csv文件并解决中文乱码

    csv其实是文本文件,但是里面的内容是利用逗号分隔的。 

    1. 生成csv文件 

     1 function new_csv($arr)
     2 {
     3     $string="";
     4     foreach ($arr as $key => $value)
     5     {
     6         foreach ($value as $k => $val)
     7         {
     8             $value[$k]=iconv('utf-8','gb2312',$value[$k]);
     9         }
    10 
    11         $string .= implode(",",$value)."
    "; //用英文逗号分开
    12     }
    13     $filename = date('Ymd').'.csv'; //设置文件名
    14     header("Content-type:text/csv");
    15     header("Content-Disposition:attachment;filename=".$filename);
    16     header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
    17     header('Expires:0');
    18     header('Pragma:public');
    19     echo $string;
    20 }
    生成csv文件

    2.读取csv文件

    网上许多封装的方法都有中文乱码问题,我这边顺手解决一下。

    /*
     * 读取CSV文件
     * @param string $file csv文件路径
     */
    function read_csv($file)
    {
        setlocale(LC_ALL, 'zh_CN');//linux系统下生效
        $data = null;//返回的文件数据行
        if (!is_file($file) && !file_exists($file)) {
            die('文件错误');
        }
        $cvs_file = fopen($file, 'r'); //开始读取csv文件数据
        $i = 0;//记录cvs的行
        while ($file_data = fgetcsv($cvs_file)) {
            $i++;
    //        if ($i == 1) {
    //            continue;//过滤表头
    //        }
            $res = array();
            if ($file_data[0] != '') {
                foreach ($file_data as $val){
                    $val = mb_convert_encoding($val, "UTF-8", "GBK");
                    $res[] = $val;
                }
                $data[$i] = $res;
            }
        }
        fclose($cvs_file);
        return $data;
    }
    读取csv文件

    是否需要过滤表头自己选择,默认不过滤

    如果还有中文乱码问题,那么用下面这个

    function read_csv($file)
        {
            setlocale(LC_ALL, 'zh_CN');//linux系统下生效
            $data = null;//返回的文件数据行
            if (!is_file($file) && !file_exists($file)) {
                die('文件错误');
            }
            $cvs_file = fopen($file, 'r'); //开始读取csv文件数据
            $i = 0;//记录cvs的行
            while ($file_data = fgetcsv($cvs_file)) {
                $i++;
                if ($file_data[0] != '') {
                    $data[$i] = $file_data;
                }
            }
            fclose($cvs_file);
            return $data;
        }
    读取csv
  • 相关阅读:
    POJ 1691 Painting a Board(状态压缩DP)
    POJ 1946 Cow Cycling(抽象背包, 多阶段DP)
    Leetcode: Best Time to Buy and Sell Stock I, II
    Leetcode: Valid Palindrome
    POJ 1946 Cow Cycling
    POJ 1661 Help Jimmy(递推DP)
    POJ 1160 Post Office(区间DP)
    POJ 2486 apple tree
    Android播放器框架分析之AwesomePlaye
    【开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位...
  • 原文地址:https://www.cnblogs.com/paopao123/p/10605975.html
Copyright © 2011-2022 走看看