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 has encountered an Access Violation
Jan 15 PHP
Discuz!5的PHP代码高亮显示插件(黑暗中的舞者更新)
Jan 29 PHP
php getimagesize 上传图片的长度和宽度检测代码
May 15 PHP
域名和cookie问题(域名后缀)
Oct 10 PHP
memcache命令启动参数中文解释
Jan 13 PHP
PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
Apr 21 PHP
PHP中的类型约束介绍
May 11 PHP
php操作redis缓存方法分享
Jun 03 PHP
10个值得深思的PHP面试题
Nov 14 PHP
PHP中for循环与foreach的区别
Mar 06 PHP
laravel配置Redis多个库的实现方法
Apr 10 PHP
ThinkPHP 5.1 跨域配置方法
Oct 11 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
Apache2 httpd.conf 中文版
2006/12/06 PHP
PHP sprintf()函数用例解析
2011/05/18 PHP
thinkphp实现图片上传功能分享
2014/03/04 PHP
Codeigniter生成Excel文档的简单方法
2014/06/12 PHP
Centos PHP 扩展Xchche的安装教程
2016/07/09 PHP
php使用parse_str实现查询字符串解析到变量中的方法
2017/02/17 PHP
实例分析PHP中PHPMailer发邮件
2017/12/13 PHP
详解PHP版本兼容之openssl调用参数
2018/07/25 PHP
PHP如何开启Opcache功能提升程序处理效率
2020/04/27 PHP
JS/jQuery实现默认显示部分文字点击按钮显示全部内容
2013/05/13 Javascript
js判断游览器类型及版本号的代码
2014/05/11 Javascript
手机端页面rem宽度自适应脚本
2015/05/20 Javascript
vue快捷键与基础指令详解
2017/06/01 Javascript
详解Webpack实战之构建 Electron 应用
2017/12/25 Javascript
JQuery中queue方法用法示例
2019/01/31 jQuery
Vue拖拽组件列表实现动态页面配置功能
2019/06/17 Javascript
基于webpack4+vue-cli3项目实现换肤功能
2019/07/17 Javascript
详解Vue之事件处理
2020/07/10 Javascript
vue tab滚动到一定高度,固定在顶部,点击tab切换不同的内容操作
2020/07/22 Javascript
Python序列之list和tuple常用方法以及注意事项
2015/01/09 Python
Python 爬虫学习笔记之正则表达式
2016/09/21 Python
Django自定义manage命令实例代码
2018/02/11 Python
python Django的web开发实例(入门)
2019/07/31 Python
python中open函数的基本用法示例
2019/09/07 Python
mac使用python识别图形验证码功能
2020/01/10 Python
Python使用ElementTree美化XML格式的操作
2020/03/06 Python
日本最大的药妆连锁店:Matsukiyo松本清药妆店
2017/11/23 全球购物
介绍一下.NET构架下remoting和webservice
2014/05/08 面试题
金融行业职业生涯规划范文
2014/01/17 职场文书
《日月潭》教学反思
2014/02/28 职场文书
请假条范文大全
2014/04/10 职场文书
建国大业观后感800字
2015/06/01 职场文书
贷款收入证明格式
2015/06/24 职场文书
优秀新员工事迹材料
2019/05/13 职场文书
Python 详解通过Scrapy框架实现爬取CSDN全站热榜标题热词流程
2021/11/11 Python
微信小程序结合ThinkPHP5授权登陆后获取手机号
2021/11/23 PHP