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 相关文章推荐
用PHP实现的随机广告显示代码
Jun 14 PHP
php代码运行时间查看类代码分享
Aug 06 PHP
简单的cookie计数器实现源码
Jun 07 PHP
codeigniter使用技巧批量插入数据实例方法分享
Dec 31 PHP
codeigniter自带数据库类使用方法说明
Mar 25 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
Apr 09 PHP
PHP基于php_imagick_st-Q8.dll实现JPG合成GIF图片的方法
Jul 11 PHP
phpmyadmin中禁止外网使用的方法
Nov 04 PHP
使用PHP+AJAX让WordPress动态加载文章的教程
Dec 11 PHP
服务器迁移php版本不同可能诱发的问题
Dec 22 PHP
PHP实现的观察者模式实例
Jun 21 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
Dec 20 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变量存储的详解
2013/06/13 PHP
php中return的用法实例分析
2015/02/28 PHP
PHP中使用curl入门教程
2015/07/02 PHP
php+MySql实现登录系统与输出浏览者信息功能
2016/07/01 PHP
laravel5.0在linux下解决.htaccess无效和去除index.php的问题
2019/10/16 PHP
浅析XMLHttpRequest的缓存问题
2013/12/13 Javascript
jquery实现弹出div,始终显示在屏幕正中间的简单实例
2014/03/08 Javascript
浅谈javascript原型链与继承
2015/07/13 Javascript
移动开发之自适应手机屏幕宽度
2016/11/23 Javascript
详解Node中导入模块require和import的区别
2017/08/11 Javascript
MUI 实现侧滑菜单及其主体部分上下滑动的方法
2018/01/25 Javascript
iview通过Dropdown(下拉菜单)实现的右键菜单
2018/10/26 Javascript
Vuex实现数据增加和删除功能
2019/11/11 Javascript
echarts.js 动态生成多个图表 使用vue封装组件操作
2020/07/19 Javascript
Python网络爬虫实例讲解
2016/04/28 Python
解决pycharm回车之后不能换行或不能缩进的问题
2019/01/16 Python
对Python3中dict.keys()转换成list类型的方法详解
2019/02/03 Python
Django框架使用内置方法实现登录功能详解
2019/06/12 Python
python3 打印输出字典中特定的某个key的方法示例
2019/07/06 Python
Python之Numpy的超实用基础详细教程
2019/10/23 Python
使用Tkinter制作信息提示框
2020/02/18 Python
Django 解决阿里云部署同步数据库报错的问题
2020/05/14 Python
python删除某个目录文件夹的方法
2020/05/26 Python
基于K.image_data_format() == 'channels_first' 的理解
2020/06/29 Python
Python 如何创建一个简单的REST接口
2020/07/30 Python
python实现excel公式格式化的示例代码
2020/12/23 Python
对pytorch中x = x.view(x.size(0), -1) 的理解说明
2021/03/03 Python
HTML5 画布canvas使用方法
2016/03/18 HTML / CSS
DAWGS鞋官方网站:鞋,凉鞋,靴子
2016/10/04 全球购物
匡威英国官网:Converse英国
2018/12/02 全球购物
远东集团网络工程师面试题
2014/10/20 面试题
采购部长岗位职责
2014/06/13 职场文书
医院合作协议书
2014/08/19 职场文书
爱国主义教育演讲稿
2014/08/26 职场文书
研究生导师推荐信
2015/03/25 职场文书
Python极值整数的边界探讨分析
2021/09/15 Python