123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 |
- <?php
- namespace App\Handlers;
- use http\Env\Request;
- use App\Models\Area;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Log;
- class DetailParse {
-
- public static function detail_parse($detail)
- {
-
-
-
-
-
-
-
-
-
-
- $detail_origin = $detail;
- $detail = str_replace(' ', '', $detail);
- $detail = str_replace("自治区", "省", $detail);
- $detail = str_replace("自治州", "州", $detail);
-
- $result = [];
-
- if (mb_strstr($detail, '县') || mb_strstr($detail, '区') || mb_strstr($detail, '旗')) {
-
- if (mb_strstr($detail, '旗')) {
- $deep3_keyword_pos = mb_strpos($detail, '旗');
- $deep3_area_name = mb_substr($detail, $deep3_keyword_pos - 1, 2);
- }
- if (mb_strstr($detail, '区')) {
- $deep3_keyword_pos = mb_strpos($detail, '区');
-
- if (mb_strstr($detail, '市')) {
- $city_pos = mb_strpos($detail, '市');
- $zone_pos = mb_strpos($detail, '区');
- $deep3_area_name = mb_substr($detail, $city_pos + 1, $zone_pos - $city_pos);
- } else {
- $deep3_area_name = mb_substr($detail, $deep3_keyword_pos - 2, 3);
-
- }
- }
- if (mb_strstr($detail, '县')) {
- $deep3_keyword_pos = mb_strpos($detail, '县');
-
- if (mb_strstr($detail, '市')) {
- $city_pos = mb_strpos($detail, '市');
- $zone_pos = mb_strpos($detail, '县');
- $deep3_area_name = mb_substr($detail, $city_pos + 1, $zone_pos - $city_pos);
- } else {
-
- if (mb_strstr($detail, '自治县')){
- $deep3_area_name = mb_substr($detail, $deep3_keyword_pos - 6, 7);
- if(in_array(mb_substr($deep3_area_name, 0, 1) , ['省', '市', '州'] )){
- $deep3_area_name = mb_substr($deep3_area_name, 1);
- }
- }else{
- $deep3_area_name = mb_substr($detail, $deep3_keyword_pos - 2, 3);
- }
-
- }
- }
- $street = mb_substr($detail, $deep3_keyword_pos + 1);
- } else {
- if (mb_strripos($detail, '市')) {
-
- $deep3_keyword_pos = mb_strripos($detail, '市');
- $deep3_area_name = mb_substr($detail, $deep3_keyword_pos - 2, 3);
- $street = mb_substr($detail, $deep3_keyword_pos + 1);
- } else {
-
- $deep3_area_name = '';
- $street = $detail;
- }
- }
-
- if (mb_strrpos($detail, '市') || mb_strstr($detail, '盟') || mb_strstr($detail, '州')) {
- if ($tmp_pos = mb_strrpos($detail, '市')) {
- $deep2_area_name = mb_substr($detail, $tmp_pos - 2, 3);
- }
- if ($tmp_pos = mb_strrpos($detail, '盟')) {
- $deep2_area_name = mb_substr($detail, $tmp_pos - 2, 3);
- }
- if ($tmp_pos = mb_strrpos($detail, '州')) {
-
- if($tmp_pos = mb_strrpos($detail, '自治州')) {
- $deep2_area_name = mb_substr($detail, $tmp_pos-4, 5);
- }else{
- $deep2_area_name = mb_substr($detail, $tmp_pos-2, 3);
- }
- }
- } else {
- $deep2_area_name = '';
- }
-
- if ($deep3_area_name != '') {
- $model_area = new Area();
-
- $condition = [];
- $condition['area_deep'] = 3;
- $condition[] = ['area_name','like', '%' . $deep3_area_name . '%'];
- $deep3_area_list = $model_area->getAreaList($condition);
-
- if ($deep3_area_list && count($deep3_area_list) > 1) {
- if ($deep2_area_name) {
- $area_info_2 = $model_area->getAreaInfo(['area_name','like', '%' . $deep2_area_name . '%']);
-
- if ($area_info_2) {
- $area_info_3 = $model_area->getAreaInfo(['area_parent_id' => $area_info_2['area_id'], array('area_name','like', '%' . $deep3_area_name . '%')]);
- }
- $area_info_1 = $model_area->getAreaInfo(['area_id' => $area_info_2['area_parent_id'], 'area_deep' => 1]);
-
- $result[1]['area_id'] = $area_info_2['area_parent_id'];
- $result[1]['area_name'] = $area_info_1['area_name'];
- $result[2]['area_id'] = $area_info_2['area_id'];
- $result[2]['area_name'] = $area_info_2['area_name'];
- $result[3]['area_id'] = $area_info_3['area_id'];
- $result[3]['area_name'] = $area_info_3['area_name'];
- }
- } else {
- if ($deep3_area_list && count($deep3_area_list) == 1) {
- $area_info_2 = $model_area->getAreaInfo(['area_id' => $deep3_area_list[0]['area_parent_id'], 'area_deep' => 2]);
- if ($area_info_2) {
- $area_info_1 = $model_area->getAreaInfo(['area_id' => $area_info_2['area_parent_id'], 'area_deep' => 1]);
-
- $result[1]['area_id'] = $area_info_2['area_parent_id'];
- $result[1]['area_name'] = $area_info_1['area_name'];
- $result[2]['area_id'] = $area_info_2['area_id'];
- $result[2]['area_name'] = $area_info_2['area_name'];
- $result[3]['area_id'] = $deep3_area_list[0]['area_id'];
- $result[3]['area_name'] = $deep3_area_list[0]['area_name'];
- }
- }elseif($deep2_area_name == $deep3_area_name){
- $area_info_2 = $model_area->getAreaInfo(['area_deep'=>2, ['area_name','like', '%' . $deep2_area_name . '%']]);
- if ($area_info_2) {
- $area_info_1 = $model_area->getAreaInfo(['area_id' => $area_info_2['area_parent_id'], 'area_deep' => 1]);
-
- if($area_info_1){
- $result[1]['area_id'] = $area_info_2['area_parent_id'];
- $result[1]['area_name'] = $area_info_1['area_name'];
- $result[2]['area_id'] = $area_info_2['area_id'];
- $result[2]['area_name'] = $area_info_2['area_name'];
- $result[3]['area_id'] = '';
- $result[3]['area_name'] = '';
- }
- }
- }
- }
- }
-
- return $result;
- }
- }
|