首页 > 开发 > PHP > 正文

PHP实现查询手机归属地的方法详解

2024-05-04 22:47:54
字体:
来源:转载
供稿:网友

本文介绍的是PHP实现查询手机归属地的方法,首先来看看手机归属地查询的类图:

后台

MobileQuery类调用:

/libs/HttpRquest /libs/ImRedis (未使用)

Api类调用 MobileQuery 类的 Query 方法来返回 $response 的数据,并进行加工。

前台

base.js 使用 .ajax 请求,并将请求后的数据填充到index.html 中。

核心代码展示

AutoLoad.php

<?php/** * TODO Auto-generated comment. */class AutoLoad { /**  * TODO Auto-generated comment.  */  public static function load($className) {  //命名空间的反斜杠替代  $filename = sprintf('%s.php',str_replace('//','/',$className));  require_once($filename); }}spl_autoload_register(['AutoLoad','load']);

Api.php

<?php/** * TODO Auto-generated comment. */require_once "AutoLoad.php";use /app/MobileQuery;class Api{ private $response; private $params; private $phone; public function __construct(){  $this->params = $_POST;  if(isset($this->params['tel'])) {   $this->phone = $this->params['tel'];  }else {   $this->phone = '17706436202';  }  $this->queryResponse($this->phone); } public function queryResponse($phone) {  $this->response = MobileQuery::query($phone);  if(is_array($this->response) and isset($this->response['province'])) {   $this->response['phone'] = $phone;   $this->response['code'] = 200;  } else {   $this->response['phone'] = $phone;   $this->response['msg'] = '手机号码错误';  } } public function getResponse() {  return json_encode($this->response); }}$Api = new Api();echo $Api->getResponse();

app/MobileQuery.php

<?php/** * TODO Auto-generated comment. */namespace app;use libs/HttpRequest;use libs/ImRedis;class MobileQuery { /**  * TODO Auto-generated comment.  */ const PHONE_API= 'https://tcc.taobao.com/cc/json/mobile_tel_segment.htm'; /**  * TODO Auto-generated comment.  */ const QUERY_PHONE = 'PHONE:INFO:'; public static function query($phone) {  $phoneData = null;  if(self::varifyPhone($phone)){   $response = HttpRequest::request(self::PHONE_API, ['tel'=>$phone]);   $phoneData = self::formatData($response);   $phoneData['msg'] ='数据由Cizel的博客提供';  }  return $phoneData; } public static function formatData($data) {  $ret = null;  if(!empty($data)){   preg_match_all("/(/w+):'([^']+)/",$data,$res);   $items = array_combine($res[1],$res[2]);   foreach ($items as $itemKey => $itemVal) {    $ret[$itemKey] = iconv('GB2312','UTF-8',$itemVal);   }  }  return $ret; } public static function varifyPhone($phone) {  if(preg_match("/^1[34578]{1}/d{9}/",$phone)) {   return true;  } else {   return false;  } }}            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表