PHP 判斷手機號歸屬地 和 運營商的免費接口


在項目開發的時候,需要去查詢又一批手機號或者固話的具體信息(歸屬地 運營商)

就需要寫一個腳本,來批量請求接口來得到我們想要的數據

學習源頭:https://blog.csdn.net/shaerdong/article/details/45842409

一、淘寶網API

API地址: http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=15850781443
參數:
tel:手機號碼
返回:JSON

二、百付寶API

API地址: https://www.baifubao.com/callback?cmd=1059&callback=phone&phone=15850781443
參數:
phone:手機號碼
callback:回調函數
cmd:未知(必須)
返回:JSON

三: 這我沒試過

http://www.haoservice.com/docs/14

有興趣可以研究一下

 

這兩個迄今為止 實測可以使用的;其他的我試了是不行的,比較是免費的么.能用就很開心了

PHP調用淘寶API實例:

<?php $mobile = "150********"; //要查詢的電話號碼 $content = get_mobile_area($mobile); print_r($content); function get_mobile_area($mobile){ $sms = array('province'=>'', 'supplier'=>''); //初始化變量 //根據淘寶的數據庫調用返回值 $url = "http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=".$mobile."&t=".time(); $content = file_get_contents($url); $sms['province'] = substr($content, "56", "4"); //截取字符串 $sms['supplier'] = substr($content, "81", "4"); return $sms; }

自己之前用的是淘寶的api,開始還算穩定,但是過了一段時間,突然發現速度越來越慢,更是經常出現訪問超時的問題,后來不得不放棄第三方,改用自己的庫來保存手機號數據!這樣一來,在自己的服務器上來判斷手機號歸屬地,最后的結果相信大家也都想到了!

在這里,貼出2015版最新的手機號歸屬地數據庫mysql版(包含170字段)的下載鏈接:http://download.csdn.net/detail/shaerdong/8715347

 

 

上面是之前博主的,我自己是用的curl去請求的

curl_get封裝方法

function get_api($url){
    $curl = curl_init(); // 啟動一個CURL會話
    $header[] = "Content-type: text/html;charset=utf-8";
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_HEADER, 0);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 跳過證書檢查
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);  // 從證書中檢查SSL加密算法是否存在
    curl_setopt($curl,CURLOPT_ENCODING,'gzip,deflate');
    $contents = curl_exec($curl);     //返回api的json對象
    $contents = mb_convert_encoding($contents, 'utf-8', 'GBK,UTF-8,ASCII');
    //關閉URL請求
    curl_close($curl);
//    dd($contents);
    return $contents;    //返回json對象
}

excel處理方法

// 一個讀取excel 查詢對應數據 並且處理數據 再導出excel的處理腳本
    public function ioexcel()
    {
        // 讀取excel文件內容
        $tmp_file = public_path('ioexcel')."/錄音正常通話統計.xls";
//        dd($tmp_file);
        Excel::load($tmp_file, function($reader) {

            $reader = $reader->getSheet(2);
            //獲取表中的數據
            $results = $reader->toArray();
//            $results = $reader->get()->toArray();
//            dd($results);
            $cellData[0] = ['錄音編號','uuid','商家名稱','客戶號碼', '客戶號碼歸屬地', '客戶號碼運營商','客服號碼', '客服號碼類型(固話/手機)','客服號碼歸屬地', '客服號碼運營商'];
            foreach ($results as $key => $value) {
                if ($key == 0) {
                    continue;
                }
                $data_id = $value[0]; // 數據id
                if ($data_id == null) {
                    continue;
                }
//                dd($data_id);
                // 根據讀取到的數據id去查詢數據
                $res = DB::table('a_data')->where('id', $data_id)->first();
//                dd($res);
                $uuid = $res->uu_id;
                $data_packet_id = $res->data_packet_id;
                // 根據數據包id查詢對應的商家id和商家名稱
                $bus_id = \ai\Models\Datapacket::getDpDetail($data_packet_id)->business_id;
                $bus_name = \ai\Models\Business::getBus($bus_id)->name;
                // 查詢客戶信息
                $kh_phone = $res->kh_phone;
                $kh_info = $this->getPhone($kh_phone);
                // 查詢客服信息
                $kf_phone = $res->called_phone;
//                dd($kf_phone);
                if ($kf_phone) {
                    $kf_info = $this->getPhone($kf_phone);
                }
                $cellData[$key+1] = [$data_id, $uuid, $bus_name, $kh_phone, $kh_info[0], $kh_info[1], $kf_phone ? $kf_phone : '', $kf_phone ? $kf_info[2] : '', $kf_phone ? $kf_info[0] : '', $kf_phone ? $kf_info[1] : ''];
//                dd($cellData[$key+1]);
            }
            $exp_res  = Excel::create("通話正常質量調查統計-第一段處理版",function($excel) use ($cellData){
                $excel->sheet('score', function($sheet) use ($cellData){
                    $sheet->rows($cellData);
                });
            })->export('xls');
        });
    }

    // 讀取手機號的客戶號碼歸屬地 客戶號碼運營商 客服號碼類型(固話/手機)等信息
    private function getPhone($phone)
    {
//        $phone = '05532611908';
        // 判斷是固話還是移動電話  固話都是以0開頭的
        $type = '手機'; // 移動電話
        if ($phone[0] == 0) {
            $type = '固話'; // 固話
        }
        $url = "https://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel={$phone}";
        $info = get_api($url);
        preg_match_all("/(\w+):'([^']+)/", $info, $match);
//        $info = str_replace ( "\r\n", '', $info );
//        $info = str_replace ( "\n", '', $info );
//        $info = str_replace ( "\t", '', $info );
//        $info = strstr($info,'__GetZoneResult_');

//        $info = json_decode($info);

//        dd($match);
        if ($type == '手機') {
            $province = $match[2][1];
            $catName = $match[2][2];
        } else if ($type == '固話') {
            $province = $match[2][0];
            $catName = '';
        }

//        dd($province, $catName);
        $data = [$province, $catName, $type];
        return $data;

//        $sms = array('province'=>'', 'supplier'=>'');    //初始化變量
//        //根據淘寶的數據庫調用返回值
//        $url = "https://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=".$phone."&t=".time();
//
//        $content = file_get_contents($url);
//        dd($content);
//        $sms['province'] = substr($content, "56", "4");  //截取字符串
//        $sms['supplier'] = substr($content, "81", "4");
//        return $sms;
    }

在我用curl方法的過程中,發現返回的結果不是json格式的,

然后我就又百度了一下

學習源頭:https://bbs.csdn.net/topics/390804729

在 php 中使用的話可以這樣解析

 
   

 

$s = file_get_contents('http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=15850781443');
preg_match_all("/(\w+):'([^']+)/", $s, $m);
$a = array_combine($m[1], $m[2]);
print_r($a);

 

Array
(
    [mts] => 1585078
    [province] => 江蘇
    [catName] => 中國移動
    [telString] => 15850781443
    [areaVid] => 30511
    [ispVid] => 3236139
    [carrier] => 江蘇移動
)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM