1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      在laravel項目中根據(jù)IP獲取省市名稱的方法-創(chuàng)新互聯(lián)

      這篇文章主要介紹在laravel項目中根據(jù)IP獲取省市名稱的方法,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!

      清苑網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站設(shè)計等網(wǎng)站項目制作,到程序開發(fā),運營維護(hù)。創(chuàng)新互聯(lián)從2013年開始到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。

      根據(jù)ip 獲取地理定位,曾嘗試了laraveltorann/geoip 包,不是很準(zhǔn)確。還有百度 API 調(diào)用獲取地理信息的方法,為了減少維護(hù)成本,最終用了thinkphp3.2 中的一個包,是否是tp框架自帶的不很清楚。這個包獲取定位的原理是內(nèi)置了省市數(shù)據(jù)庫UTFWry.dat

      在laravel項目中根據(jù)IP獲取省市名稱的方法

      laravel 項目如何使用

      我放在了項目app 同級目錄sdk 下。為了能夠使用,composer.json 中需將IpLocation.class.php 添加到classmap 自動加載中,以便該文件中包含的類能夠在被調(diào)用時被自動加載(如果不太明白為何能自動加載,參考 Laravel Composer 自動加載原理)。

      "autoload": {
          "classmap": [
              "database/seeds",
              "database/factories",
              "sdk/Org/Net/IpLocation.class.php"
          ]},

      添加后執(zhí)行composer dump-autoload

      基本使用

      $ip = new \Org\Net\IpLocation('UTFWry.dat');
      $location = $ip->getlocation('223.104.1.100');
      dd($location);

      1. 標(biāo)準(zhǔn)返回值
      我們拿 廣東深圳 的 ip 做示例

      # 打印結(jié)果
      array:5 [
      "ip" => "223.104.1.100"
      "beginip" => "223.104.1.0"
      "endip" => "223.104.1.255"
      "country" => "廣東省深圳市"
      "area" => "移動"]

      2. 個別地區(qū)返回值有所不同,左側(cè)為示范ip,右側(cè)為返回地區(qū)名稱

      # 直轄市
      '223.104.3.155',//北京市 
      '223.104.7.155',//天津市 
      '223.104.25.155',//重慶市 
      '223.104.5.200',//上海市徐匯區(qū) 
      # 自治區(qū)
      '223.104.15.100',//內(nèi)蒙古呼和浩特市 
      '223.104.29.100',//寧夏銀川市 
      '223.104.30.100',//新疆烏魯木齊市 
      '211.139.74.100',//西藏拉薩市 
      '218.204.63.100',//廣西百色市 
      
      '1.32.192.100',//香港 
      '60.246.49.100',//澳門

      封裝一個返回地區(qū)id的方法函數(shù)

      經(jīng)常使用的話,一般喜歡放在app\Helpers.php 中,

      getlocation($ip);
          $location = $location['country']; //廣東省深圳市
      
          // 如果沒有查詢到的默認(rèn)返回值
          $default = ['p_id'=>1,'c_id'=>0,'locname'=>'北京'];
      
          // 如果有市 那么市后邊的字符刪除 只保留到市
          $city_strpos = mb_strpos($location, '市');
          if($city_strpos){
              $location = mb_substr($location, 0, $city_strpos + 1);
          }
      
          // 如果是直轄市,若匹配到直接返回,不繼續(xù)匹配 “區(qū)”
          $spacial = ['北京','上海','天津','重慶'];//北京市/天津市/重慶市/上海市徐匯區(qū)
          foreach ($spacial as $bj) {
              if( strpos($location, $bj) !== false ){
                  $province_name = $bj;
                  $province_id = DB::table('loc_province')->where('name',$province_name)->value('province_id');
                  return ['p_id'=>$province_id,'c_id'=>0,'locname'=>$bj.'市'];
              }
          }
      
          // 其他標(biāo)準(zhǔn)查詢
          $expect_ids = [36,37,38,39,69]; //排除北京、、以及想要排除的地區(qū)
          $province_name = $city_name = ''; //初始化
          $province_id = $city_id = 0;
          // 所有省數(shù)據(jù)
          $all_province = DB::table('loc_province')->whereNotIn('id', $expect_ids)->get();
          foreach ($all_province as $prov) {
              $name = $prov->name;
              $prov_pos = mb_strpos($location, $name);
              // 如果匹配到目標(biāo)
              if( $prov_pos !== false ){
                  $province_id = $prov->province_id;
                  $province_name = $name;
                  // 從字符串中去除省名稱,并把省字去掉
                  $location = mb_substr($location, $prov_pos + mb_strlen($name));
                  $location = str_replace('省','',$location);
                  // 如果有“市”,那么就提取出市的名稱
                  if($location && mb_strpos($location, '市')){
                      $city_name = rtrim($location, '市');
                  }
                  if($city_name){
                      $city_id = DB::table('loc_city')->where('name',$city_name)->value('cid');
                  }else{
                      $city_id = 1; // 默認(rèn)省會
                  }
      
                  break;
              }
          }
      
          if($province_name){
              return  ['p_id'=>$province_id,'c_id'=>$city_id,'locname'=>$province_name.$city_name];
          }else{
              return $default;
          }
      }

      測試

      $testips = [
          '223.104.3.155',//北京市 
          '223.104.7.155',//天津市 
          '223.104.25.155',//重慶市 
          '223.104.5.200',//上海市徐匯區(qū) 
      
          '223.104.15.100',//內(nèi)蒙古呼和浩特市 
          '223.104.29.100',//寧夏銀川市 
          '223.104.30.100',//新疆烏魯木齊市 
          '211.139.74.100',//西藏拉薩市 
          '218.204.63.100',//廣西百色市 
      
          '1.32.192.100',//香港 
          '60.246.49.100',//澳門
      
          '223.104.1.100', //廣東省深圳市
      ];
      echo "
      ";
      foreach ($testips as $ip) {
          print_r(get_ip_location($ip));
      }

      檢查結(jié)果

      Array
      (
          [p_id] => 1
          [c_id] => 0
          [locname] => 北京市
      )
      Array
      (
          [p_id] => 3
          [c_id] => 0
          [locname] => 天津市
      )
      Array
      (
          [p_id] => 4
          [c_id] => 0
          [locname] => 重慶市
      )
      Array
      (
          [p_id] => 2
          [c_id] => 0
          [locname] => 上海市
      )
      Array
      (
          [p_id] => 7
          [c_id] => 1
          [locname] => 內(nèi)蒙古呼和浩特
      )
      Array
      (
          [p_id] => 29
          [c_id] => 1
          [locname] => 寧夏銀川
      )
      Array
      (
          [p_id] => 31
          [c_id] => 1
          [locname] => 新疆烏魯木齊
      )
      Array
      (
          [p_id] => 26
          [c_id] => 1
          [locname] => 西藏拉薩
      )
      Array
      (
          [p_id] => 21
          [c_id] => 13
          [locname] => 廣西百色
      )
      Array
      (
          [p_id] => 32
          [c_id] => 1
          [locname] => 香港
      )
      Array
      (
          [p_id] => 33
          [c_id] => 1
          [locname] => 澳門
      )
      Array
      (
          [p_id] => 20
          [c_id] => 2
          [locname] => 廣東深圳
      )

      以上是“在laravel項目中根據(jù)IP獲取省市名稱的方法”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


      分享文章:在laravel項目中根據(jù)IP獲取省市名稱的方法-創(chuàng)新互聯(lián)
      瀏覽地址:http://ef60e0e.cn/article/deeesd.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        仁怀市| 苏州市| 宁远县| 大方县| 略阳县| 溧阳市| 河曲县| 兖州市| 布拖县| 奉节县| 璧山县| 建阳市| 和顺县| 红桥区| 布拖县| 疏勒县| 鱼台县| 大同市| 正阳县| 南丹县| 陕西省| 成安县| 南投县| 宣汉县| 六枝特区| 蛟河市| 婺源县| 墨竹工卡县| 太谷县| 黔东| 紫金县| 淮阳县| 白山市| 达孜县| 福安市| 平凉市| 阿克陶县| 鹤壁市| 凤城市| 达日县| 大关县|