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);
若文章对您有帮助,帮忙点个赞!
(微信扫码即可登录,无需注册)