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 相关文章推荐
复杂检索数据并分页显示的处理方法
Oct 09 PHP
图书管理程序(二)
Oct 09 PHP
php不用内置函数对数组排序的两个算法代码
Feb 08 PHP
解决File size limit exceeded 错误的方法
Jun 14 PHP
php单态设计模式(单例模式)实例
Nov 18 PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
Jan 20 PHP
javascript数组与php数组的地址传递及值传递用法实例
Jan 22 PHP
php 生成签名及验证签名详解
Oct 26 PHP
Laravel中如何增加自定义全局函数详解
May 09 PHP
PHP _construct()函数讲解
Feb 03 PHP
PHP中16个高危函数整理
Sep 19 PHP
PHP Swoole异步Redis客户端实现方法示例
Oct 24 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实现的生成静态HTML速度快类库
2007/03/31 PHP
Zend 输出产生XML解析错误
2009/03/03 PHP
使用PHP实现Mysql读写分离
2013/06/28 PHP
PHP-FPM之Chroot执行环境详解
2015/08/03 PHP
解决php的“It is not safe to rely on the system’s timezone settings”问题
2015/10/08 PHP
PHP中的use关键字及文件的加载详解
2016/11/28 PHP
PHP实现多级分类生成树的方法示例
2017/02/07 PHP
thinkphp修改配置进入默认首页的方法
2017/02/07 PHP
php封装一个异常的处理类
2017/06/08 PHP
浅谈JavaScript编程语言的编码规范
2011/10/21 Javascript
js 遍历对象的属性的代码
2011/12/29 Javascript
使用jQuery在对象中缓存选择器的简单方法
2015/06/30 Javascript
JavaScript头像上传插件源码分享
2016/03/29 Javascript
jQuery解决$符号命名冲突
2016/06/18 Javascript
原生js仿jquery animate动画效果
2016/07/13 Javascript
详解webpack与SPA实践之开发环境搭建
2017/12/18 Javascript
js canvas实现红包照片效果
2018/08/21 Javascript
微信小程序动画(Animation)的实现及执行步骤
2018/10/28 Javascript
JS控制GIF图片的停止与显示
2019/10/24 Javascript
vue项目中使用particles实现粒子背景效果及遇到的坑(按钮没有点击响应)
2020/02/11 Javascript
[02:40]DOTA2超级联赛专访430 从小就爱玩对抗性游戏
2013/06/18 DOTA
Python实现的多线程端口扫描工具分享
2015/01/21 Python
浅谈python中拼接路径os.path.join斜杠的问题
2018/10/23 Python
使用python根据端口号关闭进程的方法
2018/11/06 Python
详解python os.path.exists判断文件或文件夹是否存在
2020/11/16 Python
KEETSA环保床垫:更好的睡眠,更好的生活!
2016/11/24 全球购物
JD Sports瑞典:英国领先的运动时尚商店
2018/01/28 全球购物
JAVA高级程序员面试题
2013/09/06 面试题
新员工培训个人的自我评价
2013/10/09 职场文书
个人找工作求职简历的自我评价
2013/10/20 职场文书
《跨越百年的美丽》教学反思
2014/02/11 职场文书
大学共青团员个人自我评价
2014/04/16 职场文书
服务承诺口号
2014/05/22 职场文书
大学生标准自荐书
2014/06/15 职场文书
2015小学教师年度考核工作总结
2015/05/12 职场文书
Shell脚本一键安装Nginx服务自定义Nginx版本
2022/03/20 Servers