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下通过IP获取地理位置的代码(小偷程序)
Jun 09 PHP
PHP.ini中配置屏蔽错误信息显示和保存错误日志的例子
May 12 PHP
php购物车实现方法
Jan 03 PHP
php单文件版在线代码编辑器
Mar 12 PHP
php准确获取文件MIME类型的方法
Jun 17 PHP
PHP实现简单ajax Loading加载功能示例
Dec 28 PHP
PHP读取CSV大文件导入数据库的实例
Jul 24 PHP
laravel实现批量更新多条记录的方法示例
Oct 22 PHP
php使用imagecopymerge()函数创建半透明水印
Jan 25 PHP
ThinkPHP框架结合Ajax实现用户名校验功能示例
Jul 03 PHP
PHP批斗大会之缺失的异常详解
Jul 09 PHP
TP5框架实现的数据库备份功能示例
Apr 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会话处理的10个函数
2015/08/11 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
再论Javascript的类继承
2011/03/05 Javascript
EXTJS FORM HIDDEN TEXTFIELD 赋值 使用value不好用的问题
2011/04/16 Javascript
解读JavaScript代码 var ie = !-[1,] 最短的IE判定代码
2011/05/28 Javascript
jQuery EasyUI API 中文文档 DateTimeBox日期时间框
2011/10/16 Javascript
jQuery获取浏览器中的分辨率实现代码
2013/04/23 Javascript
jquery向上向下取整适合分页查询
2014/09/06 Javascript
JavaScript字符串对象substring方法入门实例(用于截取字符串)
2014/10/17 Javascript
详解JavaScript正则表达式之RegExp对象
2015/12/13 Javascript
node.js文件上传处理示例
2016/10/27 Javascript
微信小程序 本地存储及登录页面处理实例详解
2017/01/11 Javascript
webpack入门+react环境配置
2017/02/08 Javascript
浅谈js中的变量名和函数名重名
2017/02/13 Javascript
vue-cli3.0配置及使用注意事项详解
2018/09/05 Javascript
layDate日期控件使用方法详解
2018/11/15 Javascript
js数组相减简单示例【删除a数组所有与b数组相同元素】
2020/03/04 Javascript
[00:52]DOTA2国际邀请赛
2020/02/21 DOTA
编写Python的web框架中的Model的教程
2015/04/29 Python
python中的编码知识整理汇总
2016/01/26 Python
PyQt5每天必学之进度条效果
2018/04/19 Python
python pandas中对Series数据进行轴向连接的实例
2018/06/08 Python
python中matplotlib条件背景颜色的实现
2019/09/02 Python
Pandas时间序列基础详解(转换,索引,切片)
2020/02/26 Python
python实现快递价格查询系统
2020/03/03 Python
python爬取音频下载的示例代码
2020/10/19 Python
html5使用canvas绘制文字特效
2014/12/15 HTML / CSS
澳大利亚香水在线商店:City Perfume
2020/09/02 全球购物
受欢迎的大学生自我评价
2013/12/05 职场文书
党员2014两会学习心得体会
2014/03/17 职场文书
2014年教师节红领巾广播稿
2014/09/10 职场文书
2014学习优秀共产党员先进事迹思想汇报
2014/09/14 职场文书
学校师德师风整改措施
2014/10/27 职场文书
复兴之路展览观后感
2015/06/02 职场文书
龙猫观后感
2015/06/09 职场文书
中小学生安全教育观后感
2015/06/17 职场文书