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的一个完整SMTP类(解决邮件服务器需要验证时的问题)
Oct 09 PHP
PHP 解决session死锁的方法
Jun 20 PHP
邮箱正则表达式实现代码(针对php)
Jun 21 PHP
解析获取优酷视频真实下载地址的PHP源代码
Jun 26 PHP
分享8个最佳的代码片段在线测试网站
Jun 29 PHP
WampServer下安装多个版本的PHP、mysql、apache图文教程
Jan 07 PHP
php中PDO方式实现数据库的增删改查
May 17 PHP
PHP排序算法类实例
Jun 17 PHP
PHP实现多级分类生成树的方法示例
Feb 07 PHP
CakePHP框架Model关联对象用法分析
Aug 04 PHP
bindParam和bindValue的区别以及在Yii2中的使用详解
Mar 12 PHP
php用户名的密码加密更安全的方法
Jun 21 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 date与gmdate的获取日期的区别
2010/02/08 PHP
PHP isset()与empty()的使用区别详解
2010/08/29 PHP
php与paypal整合方法
2010/11/28 PHP
linux下使用crontab实现定时PHP计划任务失败的原因分析
2014/07/05 PHP
9个经典的PHP代码片段分享
2014/12/18 PHP
PHP获取ip对应地区和使用网络类型的方法
2015/03/11 PHP
Laravel开启跨域请求的方法
2019/10/13 PHP
[原创]图片分页查看
2006/08/28 Javascript
随窗体滑动的小插件sticky源码
2013/06/21 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器(优化篇)
2013/06/28 Javascript
利用JS判断用户是否上网(连接网络)
2013/12/23 Javascript
JavaScript获得指定对象大小的方法
2015/07/01 Javascript
AngularJS过滤器详解及示例代码
2016/08/16 Javascript
详解Vue 多级组件透传新方法provide/inject
2018/05/09 Javascript
彻底揭秘keep-alive原理(小结)
2019/05/05 Javascript
简单了解vue中父子组件如何相互传递值(基础向)
2019/07/12 Javascript
详解element-ui中表单验证的三种方式
2019/09/18 Javascript
js实现页面导航层级指示效果
2020/08/25 Javascript
详解JavaScript中的链式调用
2020/11/27 Javascript
[47:02]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS paiN
2018/03/30 DOTA
python进阶教程之函数参数的多种传递方法
2014/08/30 Python
使用python编写监听端
2018/04/12 Python
PyQt5图形界面播放音乐的实例
2019/06/17 Python
python地震数据可视化详解
2019/06/18 Python
python小白切忌乱用表达式
2020/05/29 Python
Keras 实现加载预训练模型并冻结网络的层
2020/06/15 Python
深入了解NumPy 高级索引
2020/07/24 Python
python实现逻辑回归的示例
2020/10/09 Python
Selenium 安装和简单使用的实现
2020/12/04 Python
加拿大在线隐形眼镜和眼镜店:VisionPros
2019/10/06 全球购物
企业员工爱岗敬业演讲稿
2014/08/26 职场文书
争先创优演讲稿
2014/09/15 职场文书
领导班子作风建设剖析材料
2014/10/11 职场文书
关于颐和园的导游词
2015/01/30 职场文书
前台接待岗位职责范本
2015/04/03 职场文书
大学生村官工作总结2015
2015/04/09 职场文书