PHP基于新浪IP库获取IP详细地址的方法


Posted in PHP onMay 04, 2017

本文实例讲述了PHP基于新浪IP库获取IP详细地址的方法。分享给大家供大家参考,具体如下:

<?php
class Tool{
  /**
   * 获取IP的归属地( 新浪IP库 )
   *
   * @param $ip String    IP地址:112.65.102.16
   * @return Array
   */
  static public function getIpCity($ip)
  {
    $ip = preg_replace("/\s/","",preg_replace("/\r\n/","",$ip));
    $link = "http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=".$ip."&t=".time();
    $ipJson = self::httpCurl($link);
    preg_match("/\"country\":\"(.*)\"/Uis",$ipJson, $match1);
    preg_match("/\"province\":\"(.*)\"/Uis",$ipJson, $match2);
    preg_match("/\"city\":\"(.*)\"/Uis",$ipJson, $match3);
    return array(
      'country'=>self::ucode2zh($match1[1]), // 国家
      'province'=>self::ucode2zh($match2[1]), // 省
      'city'=>self::ucode2zh($match3[1])   // 城市
    );
  }
  /**
   * Curl方式获取信息
   */
  static public function httpCurl($url)
  {
    $curl_handle = curl_init();
    curl_setopt($curl_handle, CURLOPT_URL, $url);
    curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT,2);
    curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($curl_handle, CURLOPT_FAILONERROR,1);
    $file_content = curl_exec($curl_handle);
    curl_close($curl_handle);
    return $file_content;
  }
  /**
   * 将unicode编码转化为中文,转化失败返回原字符串
   *
   * @param $code String   unicode编码
   * @return String
   */
  static public function ucode2zh($code)
  {
    $temp = explode('\u',$code);
    $rslt = array();
    array_shift($temp);
    foreach($temp as $k => $v)
    {
      $v = hexdec($v);
      $rslt[] = '&#' . $v . ';';
    }
    $r = implode('',$rslt);
    return empty($r) ? $code : $r;
  }
}

获取IP地址类使用实例

<?php
$ipStr = Tool::getIpCity('112.65.102.16');
print_r($ipStr);

返回结果

Array ( [country] => 中国 [province] => 上海 [city] => 上海 )
PHP 相关文章推荐
yii框架源码分析之创建controller代码
Jun 28 PHP
PHP多个版本的分析解释
Jul 21 PHP
php模拟js函数unescape的函数代码
Oct 20 PHP
php中filter函数验证、过滤用户输入的数据
Jan 13 PHP
学习php开源项目的源码指南
Dec 21 PHP
简单了解PHP编程中数组的指针的使用
Nov 30 PHP
yii2.0使用Plupload实现带缩放功能的多图上传
Dec 22 PHP
Symfony2创建页面实例详解
Mar 18 PHP
PHP入门教程之上传文件实例详解
Sep 11 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
Jan 22 PHP
php框架CI(codeigniter)自动加载与自主创建对象操作实例分析
Jun 06 PHP
PHP number_format函数原理及实例解析
Jul 14 PHP
PHP 无限级分类
May 04 #PHP
PHP实现中国公民身份证号码有效性验证示例代码
May 03 #PHP
PHP基于Redis消息队列实现发布微博的方法
May 03 #PHP
Laravel5中Cookie的使用详解
May 03 #PHP
[原创]php实现数组按拼音顺序排序的方法
May 03 #PHP
PHP基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
May 03 #PHP
php中的异常和错误浅析
May 03 #PHP
You might like
PHP mkdir()定义和用法
2009/01/14 PHP
PHP文件打开、关闭、写入的判断与执行代码
2011/05/24 PHP
PHP链表操作简单示例
2016/10/15 PHP
PHP基于redis计数器类定义与用法示例
2018/02/08 PHP
Yii2.0 RESTful API 基础配置教程详解
2018/12/26 PHP
PHP笛卡尔积实现原理及代码实例
2020/12/09 PHP
jquery实现漂浮在网页右侧的qq在线客服插件示例
2013/05/13 Javascript
在JavaScript中使用timer示例
2014/05/08 Javascript
js+html5通过canvas指定开始和结束点绘制线条的方法
2015/06/05 Javascript
jquery实现拖动效果
2016/08/10 Javascript
AngularJs 动态加载模块和依赖
2016/09/15 Javascript
详解Vue整合axios的实例代码
2017/06/21 Javascript
JS 实现banner图片轮播效果(鼠标事件)
2017/08/04 Javascript
JS排序算法之冒泡排序,选择排序与插入排序实例分析
2017/12/13 Javascript
vue几个常用跨域处理方式介绍
2018/02/07 Javascript
解决vue接口数据赋值给data没有反应的问题
2018/08/27 Javascript
webpack中如何加载静态文件的方法步骤
2019/05/18 Javascript
微信小程序可滑动月日历组件使用详解
2019/10/21 Javascript
在vue中封装的弹窗组件使用队列模式实现方法
2020/07/23 Javascript
JavaScript Image对象实现原理实例解析
2020/08/26 Javascript
Python学习笔记_数据排序方法
2014/05/22 Python
python中list常用操作实例详解
2015/06/03 Python
Python利用IPython提高开发效率
2016/08/10 Python
Python 错误和异常代码详解
2018/01/29 Python
Tensorflow加载预训练模型和保存模型的实例
2018/07/27 Python
Python装饰器限制函数运行时间超时则退出执行
2019/04/09 Python
Python3 venv搭建轻量级虚拟环境的步骤(图文)
2019/08/09 Python
Python 日期的转换及计算的具体使用详解
2020/01/16 Python
python 如何利用argparse解析命令行参数
2020/09/11 Python
什么是接口(Interface)?
2013/02/01 面试题
春节活动策划方案
2014/01/24 职场文书
金融事务专业毕业生求职信
2014/02/23 职场文书
机械工程及其自动化专业求职信
2014/08/08 职场文书
护士业务学习心得体会
2016/01/25 职场文书
详解Javascript实践中的命令模式
2021/05/05 Javascript
Html5大屏数据可视化开发的实现
2021/06/11 HTML / CSS