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 相关文章推荐
建立动态的WML站点(二)
Oct 09 PHP
php下载远程文件类(支持断点续传)
Nov 14 PHP
PHP数组操作汇总 php数组的使用技巧
Jul 17 PHP
深入PHP autoload机制的详解
Jun 09 PHP
php发送get、post请求的6种方法简明总结
Jul 08 PHP
C# WinForm中实现快捷键自定义设置实例
Jan 23 PHP
php面向对象中static静态属性和静态方法的调用
Feb 08 PHP
PHP中的事务使用实例
May 26 PHP
Yii获取当前url和域名的方法
Jun 08 PHP
分享ThinkPHP3.2中关联查询解决思路
Sep 20 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
Dec 25 PHP
PHP如何通过表单直接提交大文件详解
Jan 08 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防止网站被刷新的方法汇总
2014/12/01 PHP
php利用ZipArchive类操作文件的实例
2020/01/21 PHP
JavaScript 命名空间 使用介绍
2013/08/29 Javascript
JS.elementGetStyle(element, style)应用示例
2013/09/24 Javascript
JavaScript字符串对象charAt方法入门实例(用于取得指定位置的字符)
2014/10/17 Javascript
使用JS+plupload直接批量上传图片到又拍云
2014/12/01 Javascript
javascript实现字符串反转的方法
2015/02/05 Javascript
对象题目的一个坑 理解Javascript对象
2015/12/22 Javascript
从0开始学Vue
2016/10/27 Javascript
Angular.JS中select下拉框设置value的方法
2017/06/20 Javascript
React-Native中禁用Navigator手势返回的示例代码
2017/09/09 Javascript
vue中,在本地缓存中读写数据的方法
2018/09/21 Javascript
记录一次开发微信网页分享的步骤
2019/05/07 Javascript
深入了解js原型模式
2019/05/30 Javascript
JavaScript的垃圾回收机制与内存管理
2020/08/06 Javascript
[03:24]DOTA2超级联赛专访hao 大翻盘就是逆袭
2013/05/24 DOTA
[02:30]DOTA2英雄基础教程 暗影恶魔
2013/12/17 DOTA
python实现电子词典
2020/04/23 Python
Python二维码生成库qrcode安装和使用示例
2014/12/16 Python
Python的Bottle框架中获取制定cookie的教程
2015/04/24 Python
python中enumerate函数用法实例分析
2015/05/20 Python
Using Django with GAE Python 后台抓取多个网站的页面全文
2016/02/17 Python
Python 登录网站详解及实例
2017/04/11 Python
Python之web模板应用
2017/12/26 Python
python jieba分词并统计词频后输出结果到Excel和txt文档方法
2018/02/11 Python
python读写csv文件实例代码
2019/07/05 Python
如何利用python给图片添加半透明水印
2019/09/06 Python
Python实现CNN的多通道输入实例
2020/01/17 Python
Python异步编程之协程任务的调度操作实例分析
2020/02/01 Python
Python+appium框架原生代码实现App自动化测试详解
2020/03/06 Python
Coggles美国/加拿大:高级国际时装零售商
2018/10/23 全球购物
俄罗斯最大的在线手表商店:Bestwatch.ru
2020/01/11 全球购物
SIMON MILLER官网:洛杉矶的生活方式品牌
2020/10/19 全球购物
2014年女职工工作总结
2014/11/27 职场文书
Java日常练习题,每天进步一点点(38)
2021/07/26 Java/Android
Win11怎么解除儿童账号限制?Win11解除微软儿童账号限制方法
2022/07/07 数码科技