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加MYSQL服务器
Oct 09 PHP
实现分十页分向前十页向后十页的处理
Oct 09 PHP
用php或asp创建网页桌面快捷方式的代码
Mar 23 PHP
PHP冒泡排序算法代码详细解读
Jul 17 PHP
php木马webshell扫描器代码
Jan 25 PHP
PHP安全性漫谈
Jun 28 PHP
php对二维数组按指定键值key排序示例代码
Nov 26 PHP
PHP IDE phpstorm 常用快捷键
May 18 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
Jul 21 PHP
PHP+redis实现的悲观锁机制示例
Jun 12 PHP
PHP实现获取url地址中顶级域名的方法示例
Jun 05 PHP
Laravel + Elasticsearch 实现中文搜索的方法
Feb 02 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 HTML JavaScript MySQL代码如何互相传值的方法分享
2012/09/30 PHP
PHP6 中可能会出现的新特性预览
2014/04/04 PHP
PHP生成RSS文件类实例
2014/12/05 PHP
Nginx下配置codeigniter框架方法
2015/04/07 PHP
PHP实现文件上传与下载实例与总结
2016/03/13 PHP
js判断页面中是否有指定控件的简单实例
2014/03/04 Javascript
jQuery实现checkbox全选的方法
2015/06/10 Javascript
使用JS在浏览器中判断当前网络连接状态的几种方法
2017/05/05 Javascript
详解nodejs实现本地上传图片并预览功能(express4.0+)
2017/06/28 NodeJs
微信小程序顶部可滚动导航效果
2017/10/31 Javascript
vue2+el-menu实现路由跳转及当前项的设置方法实例
2017/11/07 Javascript
vue2.0 better-scroll 实现移动端滑动的示例代码
2018/01/25 Javascript
浅谈Webpack下多环境配置的思路
2018/06/27 Javascript
layui select获取自定义属性方法
2018/08/15 Javascript
浅谈JavaScript面向对象--继承
2019/03/20 Javascript
Vue基础配置讲解
2019/11/29 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
python两种遍历字典(dict)的方法比较
2014/05/29 Python
python使用Berkeley DB数据库实例
2014/09/26 Python
python爬虫爬取淘宝商品信息
2018/02/23 Python
TensorFlow深度学习之卷积神经网络CNN
2018/03/09 Python
python 读文件,然后转化为矩阵的实例
2018/04/23 Python
对python中的pop函数和append函数详解
2018/05/04 Python
python筛选出两个文件中重复行的方法
2018/05/31 Python
pandas带有重复索引操作方法
2018/06/08 Python
Python3 实现爬取网站下所有URL方式
2020/01/16 Python
Python中os模块功能与用法详解
2020/02/26 Python
解决flask接口返回的内容中文乱码的问题
2020/04/03 Python
Timberland德国官网:靴子、鞋子、衣服、夹克及配件
2019/12/10 全球购物
策划主管的工作职责
2013/11/24 职场文书
大学生职业生涯规划书范文
2014/01/04 职场文书
采购部部长岗位职责
2014/02/06 职场文书
表决心的诗句大全
2014/03/11 职场文书
巾帼建功标兵先进事迹材料
2016/02/29 职场文书
用Python进行栅格数据的分区统计和批量提取
2021/05/27 Python
Python Django / Flask如何使用Elasticsearch
2022/04/19 Python