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 相关文章推荐
推荐一篇入门级的Class文章
Mar 19 PHP
PHP安全配置详细说明
Sep 26 PHP
php去除HTML标签实例
Nov 06 PHP
php缩小png图片不损失透明色的解决方法
Dec 25 PHP
PHP base64编码后解码乱码的解决办法
Jun 19 PHP
PHP获取POST数据的几种方法汇总
Mar 03 PHP
php随机抽奖实例分析
Mar 04 PHP
PHP实现的获取文件mimes类型工具类示例
Apr 08 PHP
PHP 爬取网页的主要方法
Jul 13 PHP
php实现的支付宝网页支付功能示例【基于TP5框架】
Sep 16 PHP
调试php程序的简单步骤
Oct 04 PHP
laravel5.1框架model类查询的实现方法
Oct 08 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检测iis环境是否支持htaccess的方法
2014/02/18 PHP
PHP实现导出excel数据的类库用法示例
2016/10/15 PHP
php生成0~1随机小数的方法(必看)
2017/04/05 PHP
php编程实现简单的网页版计算器功能示例
2017/04/26 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
PHP实现打包zip并下载功能
2018/06/12 PHP
javascript div 弹出可拖动窗口
2009/02/26 Javascript
一些mootools的学习资源
2010/02/07 Javascript
js的.innerHTML = &quot;&quot;IE9下显示有错误的解决方法
2013/09/16 Javascript
JS随机调用指定函数的方法
2015/07/01 Javascript
JavaScript对象数组排序函数及六个用法
2015/12/23 Javascript
javascript css红色经典选项卡效果实现代码
2016/05/17 Javascript
js中获取 table节点各tr及td的内容简单实例
2016/10/14 Javascript
微信开发 js实现tabs选项卡效果
2016/10/28 Javascript
微信小程序实战之上拉(分页加载)效果(2)
2017/04/17 Javascript
基于vue 开发中出现警告问题去除方法
2018/01/25 Javascript
vue项目实现记住密码到cookie功能示例(附源码)
2018/01/31 Javascript
vue.js 嵌套循环、if判断、动态删除的实例
2018/03/07 Javascript
微信小程序学习笔记之登录API与获取用户信息操作图文详解
2019/03/29 Javascript
VUE : vue-cli中去掉路由中的井号#操作
2020/09/04 Javascript
ant design vue嵌套表格及表格内部编辑的用法说明
2020/10/28 Javascript
用Python实现服务器中只重载被修改的进程的方法
2015/04/30 Python
python运行时间的几种方法
2016/06/17 Python
Python实现屏幕截图的代码及函数详解
2016/10/01 Python
在Python 不同级目录之间模块的调用方法
2019/01/19 Python
新手如何发布Python项目开源包过程详解
2019/07/11 Python
PIL图像处理模块paste方法简单使用详解
2019/07/17 Python
python基于K-means聚类算法的图像分割
2019/10/30 Python
pytorch ImageFolder的覆写实例
2020/02/20 Python
Django配置Bootstrap, js实现过程详解
2020/10/13 Python
浅谈基于Canvas的手绘风格图形库Rough.js
2018/03/19 HTML / CSS
大学生职业生涯规划范文
2014/01/08 职场文书
护士进修自我鉴定
2014/02/07 职场文书
春节慰问简报
2015/07/21 职场文书
党性教育心得体会(共6篇)
2016/01/21 职场文书
继承Win10缺点!教你关闭Win11烦人的网络搜索
2021/11/23 数码科技