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高级编程-函数-郑阿奇
Jul 04 PHP
PHP 第二节 数据类型之数值型
Apr 28 PHP
探讨PHP中this,self,parent的区别详解
Jun 08 PHP
php读取qqwry.dat ip地址定位文件的类实例代码
Nov 15 PHP
PHP面向对象程序设计方法实例详解
Dec 24 PHP
PHPstorm快捷键(分享)
Jul 17 PHP
php批量转换文件夹下所有文件编码的函数类
Aug 06 PHP
php实例化一个类的具体方法
Sep 19 PHP
php 使用 __call实现重载功能示例
Nov 18 PHP
TP5框架实现一次选择多张图片并预览的方法示例
Apr 04 PHP
PHP中abstract(抽象)、final(最终)和static(静态)原理与用法详解
Jun 05 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学习笔记(三):数据类型转换与常量介绍
2015/04/17 PHP
PHP+Mysql+jQuery实现发布微博程序 php篇
2015/10/15 PHP
PHP进阶学习之命名空间基本用法分析
2019/06/18 PHP
jquery 插件之仿“卓越亚马逊”首页弹出菜单效果
2008/12/25 Javascript
汉化英文版的Dreamweaver CS5并自动提示jquery
2010/11/25 Javascript
from表单多个按钮提交用onclick跳转不同action
2014/04/24 Javascript
一个JS函数搞定网页标题(title)闪动效果
2014/05/13 Javascript
tuzhu_req.js 实现仿百度图片首页效果
2015/08/11 Javascript
JAVASCRIPT代码编写俄罗斯方块网页版
2015/11/26 Javascript
Bootstrap Modal遮罩弹出层代码分享
2016/11/21 Javascript
EasyUI的DataGrid每行数据添加操作按钮的实现代码
2017/08/22 Javascript
vue中axios处理http发送请求的示例(Post和get)
2017/10/13 Javascript
React 使用Hooks简化受控组件的状态绑定
2019/03/18 Javascript
微信小程序云开发实现云数据库读写权限
2019/05/17 Javascript
vue 实现走马灯效果
2019/10/28 Javascript
javascript实现简单搜索功能
2020/03/26 Javascript
JavaScript中的全局属性与方法深入解析
2020/06/14 Javascript
微信小程序实现加入购物车滑动轨迹
2020/11/18 Javascript
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
2017/01/12 Python
Python通过OpenCV的findContours获取轮廓并切割实例
2018/01/05 Python
python实现指定文件夹下的指定文件移动到指定位置
2018/09/17 Python
Python 支付整合开发包的实现
2019/01/23 Python
Python产生一个数值范围内的不重复的随机数的实现方法
2019/08/21 Python
django中的数据库迁移的实现
2020/03/16 Python
python 邮件检测工具mmpi的使用
2021/01/04 Python
Python实现石头剪刀布游戏
2021/01/20 Python
简单介绍CSS3中Media Query的使用
2015/07/07 HTML / CSS
HTML5 文件域+FileReader 分段读取文件并上传到服务器
2017/10/23 HTML / CSS
Regatta官网:英国最受欢迎的户外服装和鞋类品牌
2019/05/01 全球购物
工伤赔偿协议书范本
2014/04/15 职场文书
安全教育演讲稿
2014/05/09 职场文书
基层干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2014年工商所工作总结
2014/12/09 职场文书
先进班集体申报材料
2014/12/26 职场文书
社团个人总结范文
2015/03/05 职场文书
mybatis使用oracle进行添加数据的方法
2021/04/27 Oracle