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 相关文章推荐
Memcache 在PHP中的使用技巧
Feb 08 PHP
php 搜索框提示(自动完成)实例代码
Feb 05 PHP
php生成EAN_13标准条形码实例
Nov 13 PHP
PHP编程风格规范分享
Jan 15 PHP
windows下配置php5.5开发环境及开发扩展
Dec 25 PHP
php实现递归与无限分类的方法
Feb 16 PHP
php页面,mysql数据库转utf-8乱码,utf-8编码问题总结
Aug 27 PHP
十个PHP高级应用技巧果断收藏
Sep 25 PHP
Laravel Memcached缓存驱动的配置与应用方法分析
Oct 08 PHP
php基于单例模式封装mysql类完整实例
Oct 18 PHP
PHP析构函数destruct与垃圾回收机制的讲解
Mar 22 PHP
Laravel 5+ .env环境配置文件详解
Apr 06 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
全国FM电台频率大全 - 3 河北省
2020/03/11 无线电
配置支持SSI
2006/11/25 PHP
PHP Yii框架之表单验证规则大全
2015/11/16 PHP
Yii开启片段缓存的方法
2016/03/28 PHP
删除PHP数组中头部、尾部、任意元素的实现代码
2017/04/10 PHP
浅析PHP7 的垃圾回收机制
2019/09/06 PHP
laravel 执行迁移回滚示例
2019/10/23 PHP
一段实时更新的时间代码
2006/07/07 Javascript
js 获取计算后的样式写法及注意事项
2013/02/25 Javascript
js导航菜单(自写)简单大方
2013/03/28 Javascript
JavaScript函数作用域链分析
2015/02/13 Javascript
javascript日期验证之输入日期大于等于当前日期
2015/12/13 Javascript
JavaScript BASE64算法实现(完美解决中文乱码)
2017/01/10 Javascript
three.js绘制地球、飞机与轨迹的效果示例
2017/02/28 Javascript
layui table 参数设置方法
2018/08/14 Javascript
对angularJs中controller控制器scope父子集作用域的实例讲解
2018/10/08 Javascript
JavaScript 引用类型实例详解【数组、对象、严格模式等】
2020/05/13 Javascript
[48:53]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第一场
2014/05/26 DOTA
六行python代码的爱心曲线详解
2019/05/17 Python
Python实现获取系统临时目录及临时文件的方法示例
2019/06/26 Python
Python 用三行代码提取PDF表格数据
2019/10/13 Python
django admin后管定制-显示字段的实例
2020/03/11 Python
python中wheel的用法整理
2020/06/15 Python
Python3爬虫关于识别检验滑动验证码的实例
2020/07/30 Python
python 利用Pyinstaller打包Web项目
2020/10/23 Python
MAC彩妆澳洲官网:M·A·C AU
2021/01/17 全球购物
struct和class的区别
2015/11/20 面试题
EJB面试题
2015/07/28 面试题
市场营销专业推荐信
2013/11/03 职场文书
综治维稳工作承诺书
2014/08/30 职场文书
先进教师个人总结
2015/02/11 职场文书
复兴之路展览观后感
2015/06/02 职场文书
大学体育课感想
2015/08/10 职场文书
法律服务所工作总结
2015/08/10 职场文书
七年级作文之英语老师
2019/10/28 职场文书
MySQL Server层四个日志的实现
2022/03/31 MySQL