php获得客户端浏览器名称及版本的方法(基于ECShop函数)


Posted in PHP onDecember 23, 2015

本文实例讲述了php获得客户端浏览器名称及版本的方法。分享给大家供大家参考,具体如下:

看到ecshop中有这么一个函数get_user_browser(),获取浏览器的名称和版本。虽然获取的信息只是简单的一些信息,但是还是很实用。其原理主要是通过$_SERVER['HTTP_USER_AGENT']获得浏览器信息,再用正则进行比对得出浏览器的信息。

以下是各浏览器运行的效果:

php获得客户端浏览器名称及版本的方法(基于ECShop函数)

php获得客户端浏览器名称及版本的方法(基于ECShop函数)

php获得客户端浏览器名称及版本的方法(基于ECShop函数)

源码如下:

<?php
function get_user_browser()
{
  if (empty($_SERVER['HTTP_USER_AGENT']))
  {
    return '';
  }
  $agent  = $_SERVER['HTTP_USER_AGENT'];
  $browser  = '';
  $browser_ver = '';
  if (preg_match('/MSIE\s([^\s|;]+)/i', $agent, $regs))
  {
    $browser  = 'Internet Explorer';
    $browser_ver = $regs[1];
  }
  elseif (preg_match('/FireFox\/([^\s]+)/i', $agent, $regs))
  {
    $browser  = 'FireFox';
    $browser_ver = $regs[1];
  }
  elseif (preg_match('/Maxthon/i', $agent, $regs))
  {
    $browser  = '(Internet Explorer ' .$browser_ver. ') Maxthon';
    $browser_ver = '';
  }
  elseif (preg_match('/Opera[\s|\/]([^\s]+)/i', $agent, $regs))
  {
    $browser  = 'Opera';
    $browser_ver = $regs[1];
  }
  elseif (preg_match('/OmniWeb\/(v*)([^\s|;]+)/i', $agent, $regs))
  {
    $browser  = 'OmniWeb';
    $browser_ver = $regs[2];
  }
  elseif (preg_match('/Netscape([\d]*)\/([^\s]+)/i', $agent, $regs))
  {
    $browser  = 'Netscape';
    $browser_ver = $regs[2];
  }
  elseif (preg_match('/safari\/([^\s]+)/i', $agent, $regs))
  {
    $browser  = 'Safari';
    $browser_ver = $regs[1];
  }
  elseif (preg_match('/NetCaptor\s([^\s|;]+)/i', $agent, $regs))
  {
    $browser  = '(Internet Explorer ' .$browser_ver. ') NetCaptor';
    $browser_ver = $regs[1];
  }
  elseif (preg_match('/Lynx\/([^\s]+)/i', $agent, $regs))
  {
    $browser  = 'Lynx';
    $browser_ver = $regs[1];
  }
  if (!empty($browser))
  {
    return addslashes($browser . ' ' . $browser_ver);
  }
  else
  {
    return 'Unknow browser';
  }
}
echo get_user_browser();
?>

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

PHP 相关文章推荐
提问的智慧(2)
Oct 09 PHP
php.ini中文版
Oct 09 PHP
php数组总结篇(一)
Sep 30 PHP
php下使用iconv需要注意的问题
Nov 20 PHP
PHP+SQL 注入攻击的技术实现以及预防办法
Dec 29 PHP
PHP中创建空文件的代码[file_put_contents vs touch]
Jan 20 PHP
PHP UTF8中文字符截断函数代码
Sep 11 PHP
基于xcache的配置与使用详解
Jun 18 PHP
ThinkPHP3.1新特性之动态设置自动完成和自动验证示例
Jun 19 PHP
支持生僻字且自动识别utf-8编码的php汉字转拼音类
Jun 27 PHP
php中socket的用法详解
Oct 24 PHP
PHP+Ajax实现的检测用户名功能简单示例
Feb 12 PHP
PHP+MySQL实现无极限分类栏目的方法
Dec 23 #PHP
PHP多维数组转一维数组的简单实现方法
Dec 23 #PHP
详解WordPress中简码格式标签编写的基本方法
Dec 22 #PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
Dec 22 #PHP
WordPres对前端页面调试时的两个PHP函数使用小技巧
Dec 22 #PHP
WordPress主题中添加文章列表页页码导航的PHP代码实例
Dec 22 #PHP
解析WordPress中函数钩子hook的作用及基本用法
Dec 22 #PHP
You might like
PHP下10件你也许并不了解的事情
2008/09/11 PHP
php实现文件下载更能介绍
2012/11/23 PHP
PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析
2016/10/11 PHP
一个挺有意思的Javascript小问题说明
2011/09/26 Javascript
javascript事件冒泡详解和捕获、阻止方法
2014/04/12 Javascript
jQuery中wrapAll()方法用法实例
2015/01/16 Javascript
jQuery实现监控页面所有ajax请求的方法
2015/12/10 Javascript
解决jQuery ajax请求在IE6中莫名中断的问题
2016/06/20 Javascript
Nodejs中 npm常用命令详解
2016/07/04 NodeJs
JavaScript中清空数组的方法总结
2016/12/02 Javascript
Angularjs实现搜索关键字高亮显示效果
2017/01/17 Javascript
es6学习笔记之Async函数的使用示例
2017/05/11 Javascript
基于Vue生产环境部署详解
2017/09/15 Javascript
说说node中的可读流和可写流的区别
2018/06/01 Javascript
JS实现将对象转化为数组的方法分析
2019/01/21 Javascript
使用webpack编译es6代码的方法步骤
2019/04/28 Javascript
详解Jest结合Vue-test-utils使用的初步实践
2019/06/27 Javascript
[03:24]DOTA2超级联赛专访hao 大翻盘就是逆袭
2013/05/24 DOTA
Python中Collection的使用小技巧
2014/08/18 Python
python编程培训 python培训靠谱吗
2018/01/17 Python
python 执行shell命令并将结果保存的实例
2018/05/11 Python
Python中的取模运算方法
2018/11/10 Python
pycharm运行程序时在Python console窗口中运行的方法
2018/12/03 Python
Django 反向生成url实例详解
2019/07/30 Python
CSS3提交意见输入框样式代码
2014/10/30 HTML / CSS
乐高奥地利官方商店:LEGO Shop AT
2019/07/16 全球购物
下面代码从性能上考虑,有什么问题
2015/04/03 面试题
体育教师自荐信范文
2013/12/16 职场文书
数控专业毕业生自荐信范文
2014/03/04 职场文书
2014年大堂经理工作总结
2014/11/21 职场文书
2016年感恩教师节活动总结
2016/04/01 职场文书
Goland使用Go Modules创建/管理项目的操作
2021/05/06 Golang
新手入门Mysql--sql执行过程
2021/06/20 MySQL
解析redis hash应用场景和常用命令
2021/08/04 Redis
MySQL中varchar和char类型的区别
2021/11/17 MySQL
使用 Koa + TS + ESLlint 搭建node服务器的过程详解
2022/05/30 NodeJs