PHP实现的浏览器检查类


Posted in PHP onApril 11, 2016

本文实例讲述了PHP实现的浏览器检查类。分享给大家供大家参考,具体如下:

<?php
//原作者:epsilon7
//SonyMusic([email]sonymusic@163.net[/email])
class BrowserDetector {
 var $UA = "";  //$HTTP_USER_AGENT的内容
 var $BROWSER= "Unknown";  //浏览器类型
 var $PLATFORM  = "Unknown";  //操作系统
 var $VERSION= "";  //浏览器版本号
 var $MAJORVER  = "";  //浏览器主版本号
 var $MINORVER  = "";  //浏览器副版本号
 /* 构造函数开始 */
 function BrowserDetector(){
  $this->UA  = getenv(HTTP_USER_AGENT);
  $preparens = "";
  $parens = "";
  $i = strpos($this->UA,"(");
  if ($i >= 0)  {
    $preparens = trim(substr($this->UA,0,$i));
    $parens = substr($this->UA,$i+1,strlen($this->UA));
    $j = strpos($parens,")");
    if($j>=0) {
     $parens = substr($parens,0,$j);
    }
  }
  else  {
    $preparens = $this->UA;
  }
  $browVer = $preparens;
  $token = trim(strtok($parens,";"));
  while($token)  {
    if($token=="compatible") {
    }
    elseif(preg_match("/MSIE/i","$token")) {
     $browVer = $token;
    }
    elseif(preg_match("/Opera/i","$token")) {
     $browVer = $token;
    }
    elseif(preg_match("/X11/i","$token") || preg_match("/SunOS/i","$token") || preg_match ("/Linux/i","$token")) {
     $this->PLATFORM  = "Unix";
    }
    elseif(preg_match("/Win/i","$token")) {
     $this->PLATFORM  = $token;
    }
    elseif(preg_match("/Mac/i","$token") || preg_match("/PPC/i","$token")) {
     $this->PLATFORM  = $token;
    }
    $token = strtok(";");
  }
  $msieIndex = strpos($browVer,"MSIE");
  if($msieIndex >= 0)  {
    $browVer = substr($browVer,$msieIndex,strlen($browVer));
  }
  $leftover  = "";
  if(substr($browVer,0,strlen("Mozilla")) == "Mozilla")  {
    $this->BROWSER = "Netscape";
    $leftover=substr($browVer,strlen("Mozilla")+1,strlen($browVer));
  }
  elseif(substr($browVer,0,strlen("Lynx")) == "Lynx")  {
    $this->BROWSER = "Lynx";
    $leftover=substr($browVer,strlen("Lynx")+1,strlen($browVer));
  }
  elseif(substr($browVer,0,strlen("MSIE")) == "MSIE") {
    $this->BROWSER = "IE";
    $leftover=substr($browVer,strlen("MSIE")+1,strlen($browVer));
  }
  elseif(substr($browVer,0,strlen("Microsoft Internet Explorer")) == "Microsoft Internet Explorer")  {
    $this->BROWSER = "IE";
    $leftover=substr($browVer,strlen("Microsoft Internet Explorer")+1,strlen($browVer));
  }
  elseif(substr($browVer,0,strlen("Opera")) == "Opera")  {
    $this->BROWSER = "Opera";
    $leftover=substr($browVer,strlen("Opera")+1,strlen($browVer));
  }
  $leftover = trim($leftover);
  $i=strpos($leftover," ");
  if($i > 0)  {
    $this->VERSION = substr($leftover,0,$i);
  }
  else  {
    $this->VERSION = $leftover;
  }
  $j = strpos($this->VERSION,".");
  if($j >= 0)  {
    $this->MAJORVER = substr($this->VERSION,0,$j);
    $this->MINORVER = substr($this->VERSION,$j+1,strlen($this->VERSION));
  }
  else  {
    $this->MAJORVER = $this->VERSION;
  }
 }
}
//测试程序开始
$test=new browserdetector;
echo $test->UA."<br>";
echo $test->BROWSER."<br>";
echo $test->PLATFORM."<br>";
echo $test->VERSION."<br>";
echo $test->MAJORVER."<br>";
echo $test->MINORVER."<br>";
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
实用函数3
Nov 08 PHP
浅析PHP中Collection 类的设计
Jun 21 PHP
wamp安装后自定义配置的方法
Aug 23 PHP
php强制用户转向www域名的方法
Jun 19 PHP
PHP中strpos、strstr和stripos、stristr函数分析
Jun 11 PHP
PHP中in_array函数使用的问题与解决办法
Sep 11 PHP
ThinkPHP的SAE开发相关注意事项详解
Oct 09 PHP
centos+php+coreseek+sphinx+mysql之一coreseek安装篇
Oct 25 PHP
php实用代码片段整理
Nov 12 PHP
php in_array() 检查数组中是否存在某个值详解
Nov 23 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
Mar 31 PHP
PHP实现正则表达式分组捕获操作示例
Feb 03 PHP
PHP模板引擎Smarty内建函数section,sectionelse用法详解
Apr 11 #PHP
PHP模板引擎Smarty内建函数详解
Apr 11 #PHP
PHP模板引擎Smarty内置变量调解器用法详解
Apr 11 #PHP
PHP模板引擎Smarty自定义变量调解器用法
Apr 11 #PHP
PHP中如何防止外部恶意提交调用ajax接口
Apr 11 #PHP
PHP读取mssql json数据中文乱码的解决办法
Apr 11 #PHP
PHP模板引擎Smarty中的保留变量用法分析
Apr 11 #PHP
You might like
PHP编码规范的深入探讨
2013/06/06 PHP
php定时计划任务的实现方法详解
2013/06/06 PHP
php绘图中显示不出图片的原因及解决
2014/03/05 PHP
PHP中使用smarty生成静态文件的例子
2014/04/24 PHP
PHP函数引用返回的实例详解
2016/09/11 PHP
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
2016/12/14 PHP
bootstrap table 服务器端分页例子分享
2015/02/10 Javascript
浅谈JavaScript中运算符的优先级
2015/07/07 Javascript
NodeJs读取JSON文件格式化时的注意事项
2016/09/25 NodeJs
jQ处理xml文件和xml字符串的方法(详解)
2016/11/22 Javascript
ionic2懒加载配置详解
2017/09/01 Javascript
webpack+vue-cil中proxyTable处理跨域的方法
2018/07/20 Javascript
jQuery扩展方法实现Form表单与Json互相转换的实例代码
2018/09/05 jQuery
vue webpack重写cookie路径的方法
2019/07/10 Javascript
javascript写一个ajax自动拦截并下载数据代码实例
2019/09/07 Javascript
微信小程序可滑动月日历组件使用详解
2019/10/21 Javascript
Javascript 关于基本类型和引用类型的个人理解
2019/11/01 Javascript
JavaScript forEach中return失效问题解决方案
2020/06/01 Javascript
[01:24]2014DOTA2 TI第二日 YYF表示这届谁赢都有可能
2014/07/11 DOTA
[55:03]LGD vs EG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python脚本实现统计日志文件中的ip访问次数代码分享
2014/08/06 Python
Python多线程编程(八):使用Event实现线程间通信
2015/04/05 Python
使用Python保存网页上的图片或者保存页面为截图
2016/03/05 Python
python dict.get()和dict['key']的区别详解
2016/06/30 Python
python3+opencv3识别图片中的物体并截取的方法
2018/12/05 Python
Python实现仿射密码的思路详解
2020/04/23 Python
python中uuid模块实例浅析
2020/12/29 Python
处理textarea中的换行和空格
2019/12/12 HTML / CSS
DVF官方网站:美国时装界尊尚品牌
2017/08/29 全球购物
JD Sports比利时官网:英国领先的运动鞋和运动服饰零售商
2018/10/10 全球购物
怎样声明一个匿名的内部类
2016/06/01 面试题
中药专业毕业自荐书范文
2014/02/08 职场文书
服务承诺书怎么写
2014/05/24 职场文书
员工保密协议书
2014/09/27 职场文书
《敬重卑微》读后感3篇
2019/11/26 职场文书
Java中的随机数Random
2022/03/17 Java/Android