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

2025-05-27 0 61

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

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

后台

MobileQuery类调用:

  • \\libs\\HttpRquest
  • \\libs\\ImRedis (未使用)

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

前台

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

核心代码展示

AutoLoad.php

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17
<?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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36
<?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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52
<?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;

}

}

}

lib/HttpRequest.php

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32
<?php

/**

* TODO Auto-generated comment.

*/

namespace libs;

class HttpRequest {

/**

* TODO Auto-generated comment.

*/

public static function request($url, $params =[], $method='GET')

{

$ret = null;

if(preg_match("/^(http|https)\\:\\/\\/(\\w+\\.\\w+\\.\\w+)/",$url)) {

$method = strtoupper($method);

if($method == 'POST') {

exit('nothing to do.');

} else {

if($params) {

if(strripos('?',$url)) {

$url = $url . '&' . http_build_query($params);

} else {

$url = $url . '?' . http_build_query($params);

}

}

$ret = file_get_contents($url);

}

}

return $ret;

}

}

statis/js/base.js

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54
/*

* @Author: Cizel

* @Date: 2016-04-11 16:53:52

* @Last Modified by: Cizel

* @Last Modified time: 2016-04-11 17:22:32

*/

$(document).ready(function(){

$('#query').click(function(){

var phone = $('#phone_num').val();

//alert(phone);

if (phone.length == 11) {

Cizel.GLOBAL.AJAX('Api.php','post',{'tel':phone},'json',Cizel.APPS.QUERYPHONE.AJAXCALLBACK);

}

});

});

var Cizel = Cizel || {};

Cizel.GLOBAL = {};

Cizel.APPS = {};

Cizel.APPS.QUERYPHONE = {};

Cizel.APPS.QUERYPHONE.AJAXCALLBACK = function(data){

if(data.code == 200){

Cizel.APPS.QUERYPHONE.SHOWINFO();

$('#phoneNumber').text(data.phone);

$('#phoneProvince').text(data.province);

$('#phoneCatName').text(data.catName);

$('#phoneMsg').text(data.msg);

} else {

Cizel.APPS.QUERYPHONE.HIDEINFO();

}

};

Cizel.APPS.QUERYPHONE.SHOWINFO = function(){

$('#phoneInfo').show();

}

Cizel.APPS.QUERYPHONE.HIDEINFO = function(){

$('#phoneInfo').hide();

}

Cizel.GLOBAL.AJAX = function(url, method, params,dataType,callBack)

{

$.ajax({

url: url,

type: method,

data: params,

dataType: dataType,

success:callBack,

error:function(){

alert('请求异常');

}

});

};

感悟

通过完成这个实例,感觉自己对 PHP 面向对象的编写有了新的理解,同时 JavaScript 的编写能力需要加强。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对快网idc的支持。

原文链接:http://www.cizel.cn/archives/query_phone.html

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 PHP实现查询手机归属地的方法详解 https://www.kuaiidc.com/72818.html

相关文章

发表评论
暂无评论