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 相关文章推荐
snoopy PHP版的网络客户端提供本地下载
Apr 15 PHP
PHP array操作10个小技巧分享
Jun 23 PHP
有关PHP性能优化的介绍
Jun 20 PHP
PHP实现根据设备类型自动跳转相应页面的方法
Jul 24 PHP
php开发工具有哪五款
Nov 09 PHP
yii去掉必填项中星号的方法
Dec 28 PHP
php遍历解析xml字符串的方法
May 05 PHP
ThinkPHP实现生成和校验验证码功能
Apr 28 PHP
php递归函数怎么用才有效
Feb 24 PHP
ThinkPHP5框架缓存查询操作分析
May 30 PHP
PHP DB 数据库连接类定义与用法示例
Mar 11 PHP
php使用pecl方式安装扩展操作示例
Aug 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
php 常用类整理
2009/12/23 PHP
Blitz templates 最快的PHP模板引擎
2010/04/06 PHP
php中文字符串截取方法实例总结
2014/09/30 PHP
php实现refresh刷新页面批量导入数据的方法
2014/12/23 PHP
深入讲解PHP的Yii框架中的属性(Property)
2016/03/18 PHP
给大家分享几个常用的PHP函数
2017/01/15 PHP
thinkPHP5.0框架API优化后的友好性分析
2017/03/17 PHP
PHP的mysqli_stmt_init()函数讲解
2019/01/24 PHP
php菜单/评论数据递归分级算法的实现方法
2019/08/01 PHP
php+jQuery ajax实现的实时刷新显示数据功能示例
2019/09/12 PHP
用JS实现一个页面多个css样式实现
2008/05/29 Javascript
firefox插件Firebug的使用教程
2010/01/02 Javascript
javascript:void(0)的作用示例介绍
2013/10/28 Javascript
Bootstrap表单组件教程详解
2016/04/26 Javascript
完全深入学习Bootstrap表单
2016/11/28 Javascript
使用Vue.js创建一个时间跟踪的单页应用
2016/11/28 Javascript
Node.js websocket使用socket.io库实现实时聊天室
2017/02/20 Javascript
jQuery模拟下拉框选择对应菜单的内容
2017/03/07 Javascript
vue.js从安装到搭建过程详解
2017/03/17 Javascript
JS实现自定义状态栏动画文字效果示例
2017/10/12 Javascript
JS中min函数实例讲解
2019/02/18 Javascript
微信小程序登陆注册功能的实现代码
2019/12/10 Javascript
vue开发简单上传图片功能
2020/06/30 Javascript
Python SQLite3简介
2018/02/22 Python
解决python3中cv2读取中文路径的问题
2018/12/05 Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
2019/11/08 Python
python数据预处理 :数据共线性处理详解
2020/02/24 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
2020/06/03 Python
详解查看Python解释器路径的两种方式
2020/10/15 Python
利物浦足球俱乐部官方网上商店:Liverpool FC Official Store
2018/01/13 全球购物
房地产端午节活动方案
2014/08/24 职场文书
党员考试作弊检讨书1000字
2015/02/16 职场文书
公司开会通知
2015/04/20 职场文书
大学入学感言
2015/08/01 职场文书
分析JVM源码之Thread.interrupt系统级别线程打断
2021/06/29 Java/Android
PostgreSQL 插入INSERT、删除DELETE、更新UPDATE、事务transaction
2022/04/12 PostgreSQL