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);
            }
        }
    }

  

posted @ 2021-12-20 18:43  佚小名  阅读(118)  评论(0编辑  收藏  举报