PHP地址智能匹配识别
public static function AreasCallback($addressDetail,$start=0,$len=1,$pid=0,$level=1,$addressArr=[],$nexStart=1){ //特殊符号处理 $addressDetail=str_replace(' ', '', $addressDetail); $addressDetail=str_replace('_', '', $addressDetail); $addressDetail=str_replace('-', '', $addressDetail); $addressDetail=str_replace(',', '', $addressDetail); $str=mb_substr($addressDetail, $start,$len); $area=\DB::table('hlyun_basic_areas') ->where('Pid',$pid) ->where('Level',$level) ->where('Name','like','%'.$str.'%')->first(); $area=json_decode(json_encode($area),true); // var_dump($str,$start,$len,$level); if (!empty($area)) { $nexStart=$start+$len; if ($nexStart==mb_strlen($addressDetail)) { return $addressArr; } $addressArr[$level]=$area; $len=$len+1; return self::AreasCallback($addressDetail, $start,$len,$pid,$level,$addressArr,$nexStart); }else{ if ($level==3) { return $addressArr; }else{ $parea=collect($addressArr)->where('Level',$level)->first(); $pid=$parea['ID']; $level++; $start=$nexStart; $len=1; return self::AreasCallback($addressDetail, $start,$len,$pid,$level,$addressArr,$nexStart); } } }