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时间不正确的解决方法
Apr 09 PHP
为IP查询添加GOOGLE地图功能的代码
Aug 08 PHP
php教程之phpize使用方法
Feb 12 PHP
php导出CSV抽象类实例
Sep 24 PHP
PHP实现采集中国天气网未来7天天气
Oct 15 PHP
PHP启动windows应用程序、执行bat批处理、执行cmd命令的方法(exec、system函数详解)
Oct 20 PHP
PHP使用CURL模拟登录的方法
Jul 08 PHP
利用PHP fsockopen 模拟POST/GET传送数据的方法
Sep 22 PHP
php简单创建zip压缩文件的方法
Apr 30 PHP
PHP+mysql实现的三级联动菜单功能示例
Feb 15 PHP
php 使用 __call实现重载功能示例
Nov 18 PHP
通过实例解析PHP数据类型转换方法
Jul 11 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/07/02 PHP
php实现在线生成条形码示例分享(条形码生成器)
2013/12/30 PHP
PHP获取文件扩展名的4种方法
2015/11/24 PHP
简单实用的PHP文本缓存类实例
2019/03/22 PHP
jquery实现居中弹出层代码
2010/08/25 Javascript
jQuery EasyUI API 中文文档 - TimeSpinner时间微调器
2011/10/23 Javascript
一个简单的Ext.XTemplate的实例代码
2012/03/18 Javascript
Svg.js实例教程及使用手册详解(一)
2016/05/16 Javascript
预防网页挂马的方法总结
2016/11/03 Javascript
bootstrap table表格使用方法详解
2017/04/26 Javascript
Angularjs cookie 操作实例详解
2017/09/27 Javascript
浅谈Node.js 沙箱环境
2018/05/15 Javascript
微信小程序实现弹出层效果
2020/05/26 Javascript
详解key在Vue列表渲染时究竟起到了什么作用
2019/04/20 Javascript
vue实现直播间点赞飘心效果的示例代码
2019/09/20 Javascript
微信小程序swiper使用网络图片不显示问题解决
2019/12/13 Javascript
用python登录Dr.com思路以及代码分享
2014/06/25 Python
python执行get提交的方法
2015/04/29 Python
Python利用pandas计算多个CSV文件数据值的实例
2018/04/19 Python
使用Python横向合并excel文件的实例
2018/12/11 Python
python脚本实现音频m4a格式转成MP3格式的实例代码
2019/10/09 Python
Django 博客实现简单的全文搜索的示例代码
2020/02/17 Python
python爬虫beautifulsoup库使用操作教程全解(python爬虫基础入门)
2021/02/19 Python
html5 Canvas画图教程(10)—把面拆成线条模拟出圆角矩形
2013/01/09 HTML / CSS
HTML5中使用postMessage实现两个网页间传递数据
2016/06/22 HTML / CSS
乐高官方旗舰店:LEGO积木玩具
2019/04/06 全球购物
美国知名的隐形眼镜电商:Contacts America
2019/11/19 全球购物
全球最大化妆品零售网站:SkinStore
2020/10/24 全球购物
园林技术专业求职信
2014/07/28 职场文书
建筑专业毕业生求职信
2014/09/30 职场文书
学生会感恩节活动方案
2014/10/11 职场文书
先进集体申报材料
2014/12/25 职场文书
辩护词范文大全
2015/05/21 职场文书
教你利用Selenium+python自动化来解决pip使用异常
2021/05/20 Python
使用goaccess分析nginx日志的详细方法
2021/07/09 Servers
原型和原型链 prototype和proto的区别详情
2021/11/02 Javascript