PHP把CSV格式转换成数组

网络上的很多方法,都是没有考虑特殊情况的,比如含有双引号和英文逗号,于是自己写了一个。

/**
 * php截取指定两个字符之间字符串,默认字符集为utf-8 Power by 大耳朵图图
 * @param string $begin  开始字符串
 * @param string $end    结束字符串
 * @param string $str    需要截取的字符串
 * @return string
 */
function getstr($str,$begin,$end){
    $b = mb_strpos($str,$begin) + mb_strlen($begin);
    $e = mb_strpos($str,$end,$b) - $b;
    return mb_substr($str,$b,$e);
}
//把csv内容变成数组
function csv_decode($csv_str,$tihuan = " "){
    $html = $csv_str;
    $html = str_replace("\r","",$html);
    $arr = explode("\n",$html);
    $tbArr = array();
    $reArr = array();
    foreach($arr as $k=>$v){
        if(!empty(trim($v))){
            while(strpos(",".$v.",",',"')!==false){
                $gstr_old = getstr(",".$v.",",',"','",');
                $gstr_new = str_replace(","," ",$gstr_old);
                $gstr_new = str_replace('"','',$gstr_new);
                $gstr_new = str_replace("'",'',$gstr_new);
                $v = str_replace('"'.$gstr_old.'"',$gstr_new,$v);
            }
            $arrSub = explode(',',$v);
            $reArr[] = $arrSub;
        }
    }
    return $reArr;
}

//使用方法,第二个参数默认是空格
$reArr = csv_decode('csv字符串','碰到英文逗号替换成什么');
print_r($reArr);


若文章对您有帮助,帮忙点个赞!

0
-5
发布时间 2020-10-27 14:26:20
0 条回复(回复会通过微信通知作者)
点击加载更多评论
登录 后再进行评论
(微信扫码即可登录,无需注册)