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中创建并处理图象
Oct 09 PHP
我的论坛源代码(三)
Oct 09 PHP
php中的Base62类(适用于数值转字符串)
Aug 12 PHP
百度ping方法使用示例 自动ping百度
Jan 26 PHP
PHP安全上传图片的方法
Mar 21 PHP
PHP使用内置函数生成图片的方法详解
May 09 PHP
php实现数据库的增删改查
Feb 26 PHP
php读取和保存base64编码的图片内容
Apr 22 PHP
PHP实现网站访问量计数器
Oct 27 PHP
PHP实现生成模糊图片的方法示例
Dec 21 PHP
Laravel实现通过blade模板引擎渲染视图
Oct 25 PHP
phpstudy后门rce批量利用脚本的实现
Dec 12 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
造就帕卡马拉的帕卡斯是怎么被发现的
2021/03/03 咖啡文化
写php分页时出现的Fatal error的解决方法
2011/04/18 PHP
linux iconv方法的使用
2011/10/01 PHP
浅析PHP原理之变量分离/引用(Variables Separation)
2013/08/09 PHP
php计算年龄精准到年月日
2015/11/17 PHP
PHP实现的简单异常处理类示例
2017/05/04 PHP
php中各种定义变量的方法小结
2017/10/18 PHP
使用PHPStorm+XDebug搭建单步调试环境
2017/11/19 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
用 JavaScript 迁移目录
2006/12/18 Javascript
jQuery+CSS实现菜单滑动伸展收缩(仿淘宝)
2013/03/22 Javascript
深入分析下javascript中的[]()+!
2015/07/07 Javascript
Javascript将双字节字符转换成单字节字符并计算长度
2016/06/22 Javascript
vue elementui tree 任意级别拖拽功能代码
2020/08/31 Javascript
用python 制作图片转pdf工具
2015/01/30 Python
Python实现从URL地址提取文件名的方法
2015/05/15 Python
Python实现的质因式分解算法示例
2018/05/03 Python
详解Python3.6的py文件打包生成exe
2018/07/13 Python
Django添加favicon.ico图标的示例代码
2018/08/07 Python
Python干货:分享Python绘制六种可视化图表
2018/08/27 Python
Django Form and ModelForm的区别与使用
2019/12/06 Python
python中time包实例详解
2021/02/02 Python
canvas 基础之图像处理的使用
2020/04/10 HTML / CSS
台湾网购生鲜第一品牌:i3Fresh爱上新鲜
2017/10/26 全球购物
墨西哥巴士车票在线购买:ClickBus
2018/03/27 全球购物
意大利中国电子产品购物网站:Geekmall.com
2019/09/30 全球购物
学前教育毕业生自荐信范文
2013/12/24 职场文书
红领巾心向党广播稿
2014/01/19 职场文书
保安部任务及岗位职责
2014/02/25 职场文书
解除劳动合同协议书范本2014
2014/09/25 职场文书
党员群众路线整改措施及今后努力方向
2014/10/28 职场文书
社区活动总结
2015/02/04 职场文书
办公用品质量保证书
2015/05/11 职场文书
百年校庆感言
2015/08/01 职场文书
MySQL 5.7常见数据类型
2021/07/15 MySQL
SpringBoot整合Mybatis Generator自动生成代码
2021/08/23 Java/Android