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 相关文章推荐
一个odbc连mssql分页的类
Oct 09 PHP
PHP下一个非常全面获取图象信息的函数
Nov 20 PHP
mysql From_unixtime及UNIX_TIMESTAMP及DATE_FORMAT日期函数
Mar 21 PHP
php连接Access数据库错误及解决方法
Jun 20 PHP
解析Win7 XAMPP apache无法启动的问题
Jun 26 PHP
浅析php数据类型转换
Jan 09 PHP
ThinkPHP实例化模型的四种方法概述
Aug 22 PHP
PHP简单的MVC框架实现方法
Dec 01 PHP
PHP实现QQ登录实例代码
Jan 14 PHP
PHP的Yii框架中行为的定义与绑定方法讲解
Mar 18 PHP
PHP定义字符串的四种方式详解
Feb 06 PHP
PHP封装的非对称加密RSA算法示例
May 28 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小技巧 把数组的键和值交换形成了新的数组,查找值取得键
2011/06/02 PHP
CI框架装载器Loader.php源码分析
2014/11/04 PHP
PHP yii实现model添加默认值的方法(两种方法)
2016/11/10 PHP
PHP各种常见经典算法总结【排序、查找、翻转等】
2019/08/05 PHP
BOOM vs RR BO3 第二场2.13
2021/03/10 DOTA
学习ExtJS border布局
2009/10/08 Javascript
jquery1.83 之前所有与异步列队相关的模块详细介绍
2012/11/13 Javascript
15条JavaScript最佳实践小结
2013/08/09 Javascript
纯CSS3代码实现滑动开关效果
2015/08/19 Javascript
JavaScript操作class和style样式代码详解
2016/02/13 Javascript
bootstrap中模态框、模态框的属性实例详解
2017/02/17 Javascript
Vue项目全局配置页面缓存之按需读取缓存的实现详解
2018/08/01 Javascript
vue跳转同一个组件,参数不同,页面接收值只接收一次的解决方法
2019/11/05 Javascript
Vant Weapp组件踩坑:picker的初始赋值解决
2020/11/12 Javascript
[44:51]2018DOTA2亚洲邀请赛 4.4 淘汰赛 VP vs Liquid 第二场
2018/04/05 DOTA
[04:32]玩具屠夫中文语音节选
2020/08/23 DOTA
Python读写Redis数据库操作示例
2014/03/18 Python
深入剖析Python的爬虫框架Scrapy的结构与运作流程
2016/01/20 Python
Python实现简单多线程任务队列
2016/02/27 Python
python3 发送任意文件邮件的实例
2018/01/23 Python
对pytorch网络层结构的数组化详解
2018/12/08 Python
python opencv 简单阈值算法的实现
2019/08/04 Python
python实现淘宝购物系统
2019/10/25 Python
python实现ssh及sftp功能(实例代码)
2020/03/16 Python
python动态规划算法实例详解
2020/11/22 Python
CSS3 border-image详解、应用及jQuery插件
2011/08/29 HTML / CSS
html5 视频播放解决方案
2016/11/06 HTML / CSS
英国礼品和生活方式品牌:Treat Republic
2020/11/21 全球购物
.net笔试题
2014/03/03 面试题
信息管理员岗位职责
2013/12/01 职场文书
便利店投资的创业计划书
2014/01/12 职场文书
幼儿评语大全
2014/04/30 职场文书
以幸福为主题的活动方案
2014/08/22 职场文书
2014年环境整治工作总结
2014/12/10 职场文书
运动会加油稿30字
2015/07/21 职场文书
创业计划书之网络外卖
2019/10/31 职场文书