首先我們介紹使用自己的資料庫查詢多個手機號碼,那還是建議你擁有一個自己的的手機號碼資料庫。正常情況下,只是滿足一般查詢的話,你不需要去購買專業版的手機號碼資料庫,增加無謂成本。我免費為你提供一個ACCESS資料庫,包含17萬多條資料,常用的130-139、150-159以及180-189開頭手機號碼段都在其中,你可以藉助資料庫工具輕鬆地將它轉換成MYSQL或其它版本資料庫
最新手機號碼資料庫下載地址:http://www.111cn.net/down/phone-number-database.rar
PHP+MYSQL手機號碼歸屬地查詢實現方法
通過上面的介紹,我們已經有了自己的MYSQL資料表。這個表結構很簡單:ID(序號),code(區號),num(手機號碼段),cardtype(手機卡類型),city(手機號碼歸屬地)。注意,這個表格儲存體資料量很大,應當根據你的sql查詢語句,建立合適的索引欄位,以提高查詢效率。
1)擷取手機號碼歸屬地,我們只需要通過判斷手機號碼段歸屬地即可。主要通過以下函數實現,其中GetAlabNum、cn_substr、str_replace都是字串操作函數,$dsql是資料庫操作類。
代碼如下 |
複製代碼 |
function GetTelphone($tel) { global $city,$dsql; if(isset($tel)) $tel = GetAlabNum(trim($tel));//GetAlabNum函數用於替換全形數字,將可能存在的非法手機號碼轉換為數字;trim去除多餘空格。 else return false; if(strlen($tel) < 7) return false; $tel = cn_substr($tel, 11);//先截取11個字元,防止是多個手機號碼 //if(!is_numeric($tel)) return false; if(cn_substr($tel, 1) == "0")//判斷手機號碼是否以0開頭,這種情況可能會是有線電話號以0開頭 { if(cn_substr($tel, 2) == "01" || cn_substr($tel, 2) == "02") $tel = cn_substr($tel, 3);//3位區號 else $tel = cn_substr($tel, 4); $row = $dsql->GetOne(" Select code,city as dd from `#@__tel` where code='$tel' group by code "); } else { $tel = cn_substr($tel, 7); $row = $dsql->GetOne(" Select num,city as dd from `#@__tel` where num='$tel' "); } $city = $row['dd']; if($city) { $city = str_replace("省", "-", $city); $city = str_replace("市", "", $city); $city = "<br /><font color="green">[".$city."]</font>"; return $city; } } |
api實現方法,這裡不需要自己的資料庫但有限制了
主要使用curl實現,需要開啟php對curl的支援。
代碼如下 |
複製代碼 |
<?php header(“Content-Type:text/html;charset=utf-8″); if (isset($_GET['number'])) { $url = ‘http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo’; $number = $_GET['number']; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, “mobileCode={$number}&userId=”); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); curl_close($ch); $data = simplexml_load_string($data); if (strpos($data, ‘http://’)) { echo ‘手機號碼格式錯誤!’; } else { echo $data; } } ?> <form action=”mobile.php” method=”get”> 手機號碼: <input type=”text” name=”number” /> <input type=”submit” value=”提交” /> </form> |
與php mysql手機號碼歸屬地查詢這個會慢很多,畢竟要通過第三方法資料。