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实现图片简单上传
Oct 09 PHP
提高define性能的php扩展hidef的安装和使用
Jun 14 PHP
php面向对象中的魔术方法中文说明
Mar 04 PHP
thinkphp常见路径用法分析
Dec 02 PHP
php获取字符串中各个字符出现次数的方法
Feb 23 PHP
php使用simplexml_load_file加载XML文件并显示XML的方法
Mar 19 PHP
PHP语法小结之基础和变量
Nov 22 PHP
CodeIgniter集成smarty的方法详解
May 26 PHP
Yii2中SqlDataProvider用法示例
Sep 22 PHP
PHP实现判断数组是一维、二维或几维的方法
Feb 06 PHP
Mac下关于PHP环境和扩展的安装详解
Oct 17 PHP
ThinkPHP5.1+Ajax实现的无刷新分页功能示例
Feb 10 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函数method_exists()与is_callable()的区别
2013/06/21 PHP
VPS中使用LNMP安装WordPress教程
2014/12/28 PHP
JS声明变量背后的编译原理剖析
2012/12/28 Javascript
JS实现金额转换(将输入的阿拉伯数字)转换成中文的实现代码
2013/09/30 Javascript
js转义字符介绍
2013/11/05 Javascript
在javascript中实现函数数组的方法
2013/12/25 Javascript
Bootstarp风格的toggle效果分享
2016/02/23 Javascript
Angular.JS判断复选框checkbox是否选中并实时显示
2016/11/30 Javascript
详解JS中的立即执行函数
2017/02/24 Javascript
jQuery Autocomplete简介_动力节点Java学院整理
2017/07/17 jQuery
Node调用Java的示例代码
2017/09/20 Javascript
详谈commonjs模块与es6模块的区别
2017/10/18 Javascript
JS装饰器函数用法总结
2018/04/21 Javascript
vue router带参数页面刷新或回退参数消失的解决方法
2019/02/27 Javascript
JavaScript使用面向对象实现的拖拽功能详解
2019/06/12 Javascript
layui+jquery支持IE8的表格分页方法
2019/09/28 jQuery
浅谈Three.js截图并下载的大坑
2019/11/01 Javascript
es6数组includes()用法实例分析
2020/04/18 Javascript
Python最长公共子串算法实例
2015/03/07 Python
Python的动态重新封装的教程
2015/04/11 Python
利用python写个下载teahour音频的小脚本
2017/05/08 Python
Python中if elif else及缩进的使用简述
2018/05/31 Python
PyCharm第一次安装及使用教程
2020/01/08 Python
selenium切换标签页解决get超时问题的完整代码
2020/08/30 Python
python 制作网站筛选工具(附源码)
2021/01/21 Python
pycharm 使用anaconda为默认环境的操作
2021/02/05 Python
CSS3+font字体文件实现圆形半透明菜单具体步骤(图解)
2013/06/03 HTML / CSS
纯CSS3实现滚动的齿轮动画效果
2014/06/05 HTML / CSS
纯CSS3代码实现文字描边
2016/04/25 HTML / CSS
日本无添加化妆品:HABA
2016/08/18 全球购物
如何查找和删除数据库中的重复数据
2014/11/05 面试题
社区工作者先进事迹
2014/01/18 职场文书
对教师的评语
2014/04/28 职场文书
婚庆公司开业主持词
2015/06/30 职场文书
格列夫游记读书笔记
2015/07/01 职场文书
golang 实现时间戳和时间的转化
2021/05/07 Golang