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