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 相关文章推荐
snoopy 强大的PHP采集类使用实例代码
Dec 09 PHP
php表单提交问题的解决方法
Apr 12 PHP
提高PHP性能的编码技巧以及性能优化详细解析
Aug 24 PHP
CI使用Tank Auth转移数据库导致密码用户错误的解决办法
Jun 12 PHP
php之curl设置超时实例
Nov 03 PHP
Symfony2安装第三方Bundles实例详解
Feb 04 PHP
java微信开发之上传下载多媒体文件
Jun 24 PHP
thinkPHP中钩子的两种配置调用方法详解
Nov 11 PHP
thinkPHP中配置的读取与C方法详解
Dec 05 PHP
详解PHP安装mysql.so扩展的方法
Dec 31 PHP
PHP进阶学习之依赖注入与Ioc容器详解
Jun 19 PHP
php连接mysql之mysql_connect()与mysqli_connect()的区别
Jul 19 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
smarty实例教程
2006/11/19 PHP
第三章 php操作符与控制结构代码
2011/12/30 PHP
PHP正则表达式替换站点关键字链接后空白的解决方法
2014/09/16 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
2017/12/26 PHP
解决laravel session失效的问题
2019/10/14 PHP
js弹出的对话窗口永远保持居中显示
2012/12/15 Javascript
谈谈JavaScript中的函数与闭包
2013/04/14 Javascript
jquery自动填充勾选框即把勾选框打上true
2014/03/24 Javascript
json字符串之间的相互转换示例代码
2014/08/21 Javascript
JS中的THIS和WINDOW.EVENT.SRCELEMENT详解
2015/05/25 Javascript
详解JavaScript基本类型和引用类型
2015/12/09 Javascript
jquery.cookie.js实现用户登录保存密码功能的方法
2016/04/15 Javascript
vue项目优化之通过keep-alive数据缓存的方法
2017/12/11 Javascript
vue2配置scss的方法步骤
2019/06/06 Javascript
JavaScript图片旋转效果实现方法详解
2020/06/28 Javascript
js实现鼠标点击飘爱心效果
2020/08/19 Javascript
JavaScript实现4位随机验证码的生成
2021/01/28 Javascript
跟老齐学Python之通过Python连接数据库
2014/10/28 Python
python3.6连接MySQL和表的创建与删除实例代码
2017/12/28 Python
python中int与str互转方法
2018/07/02 Python
Python人脸识别第三方库face_recognition接口说明文档
2019/05/03 Python
python实现连连看辅助之图像识别延伸
2019/07/17 Python
Python enumerate函数遍历数据对象组合过程解析
2019/12/11 Python
Python实现初始化不同的变量类型为空值
2020/06/02 Python
CSS3实现头像旋转效果
2017/03/13 HTML / CSS
改变生活的男士内衣:SAXX Underwear
2019/08/28 全球购物
AssertionError 跟一下那个类是 “is – a”的关系
2012/02/21 面试题
员工培训心得体会
2013/12/30 职场文书
网络编辑岗位职责
2014/03/18 职场文书
志愿者活动总结报告
2014/06/27 职场文书
禁毒宣传活动总结
2014/08/26 职场文书
学习普通话的体会
2014/11/07 职场文书
2015年考研复习计划
2015/01/19 职场文书
个人专业技术总结
2015/03/05 职场文书
MySQL 1130异常,无法远程登录解决方案详解
2021/08/23 MySQL
NASA 机智号火星直升机拍到了毅力号设备碎片
2022/04/29 数码科技