使用php判断浏览器的类型和语言的函数代码


Posted in PHP onFebruary 28, 2013

我们经常看到有一些网站上面会显示出你目前使用的浏览器类型和使用的语言,比如显示的是:您使用的浏览器为 IE6,繁体字。看起来是不是很炫。

其实这样的功能不难实现,无非就是判断浏览器的类型和语言,如果用JS来做应该很简单,这里我们看看用PHP来怎么实现这样的功能,既然是在做判断,就可以用PHP的条件语句if..else来判断实现。

判断浏览器类型:

<?php echo $_SERVER["HTTP_USER_AGENT"]; ?>

判断浏览器语言:

<?php echo $_SERVER["HTTP_ACCEPT_LANGUAGE"]; ?>

判断浏览器类型的具体程序如下:

<?php
if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE 8.0"))  
echo "Internet Explorer 8.0";  
else if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE 7.0"))  
echo "Internet Explorer 7.0";  
else if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE 6.0"))  
echo "Internet Explorer 6.0";  
else if(strpos($_SERVER["HTTP_USER_AGENT"],"Firefox/3"))  
echo "Firefox 3";  
else if(strpos($_SERVER["HTTP_USER_AGENT"],"Firefox/2"))  
echo "Firefox 2";  
else if(strpos($_SERVER["HTTP_USER_AGENT"],"Chrome"))  
echo "Google Chrome";  
else if(strpos($_SERVER["HTTP_USER_AGENT"],"Safari"))  
echo "Safari";  
else if(strpos($_SERVER["HTTP_USER_AGENT"],"Opera"))  
echo "Opera";  
else echo $_SERVER["HTTP_USER_AGENT"];  
?>

判断浏览器语言的具体程序如下:

<?php
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 4); //只取前4位,这样只判断最优先的语言。如果取前5位,可能出现en,zh的情况,影响判断。  
if (preg_match("/zh-c/i", $lang))  
echo "简体中文";  
else if (preg_match("/zh/i", $lang))  
echo "繁?中文";  
else if (preg_match("/en/i", $lang))  
echo "English";  
else if (preg_match("/fr/i", $lang))  
echo "French";  
else if (preg_match("/de/i", $lang))  
echo "German";  
else if (preg_match("/jp/i", $lang))  
echo "Japanese";  
else if (preg_match("/ko/i", $lang))  
echo "Korean";  
else if (preg_match("/es/i", $lang))  
echo "Spanish";  
else if (preg_match("/sv/i", $lang))  
echo "Swedish";  
else echo $_SERVER["HTTP_ACCEPT_LANGUAGE"];  
?>

小结:判断浏览器类型主要是靠分析_SERVER["HTTP_USER_AGENT"]的内容,而分析浏览器语言则是分析_SERVER["HTTP_ACCEPT_LANGUAGE"]。

原理:因为浏览器在和服务器连接时候都会先发送一些包含自己信息的内容(浏览器类型、语言)。所以这里我们主要分析的是_SERVER["HTTP_USER_AGENT"](浏览器类型)和_SERVER["HTTP_ACCEPT_LANGUAGE"](浏览器语言)。我们所要做的就是把这些内容读出来,然后用strpos或者preg_match函数来对比就可以了,根据程序的设计我们还可以将页面设计得更漂亮一些出来。

PHP 相关文章推荐
php 上一篇,下一篇文章实现代码与原理说明
May 09 PHP
PHP 自定义错误处理函数trigger_error()
Mar 26 PHP
php echo, print, print_r, sprintf, var_dump, var_expor的使用区别
Jun 20 PHP
PHP错误提示的关闭方法详解
Jun 23 PHP
zf框架的session会话周期及次数限制使用示例
Mar 13 PHP
Nginx服务器上安装并配置PHPMyAdmin的教程
Aug 18 PHP
Yii2中使用join、joinwith多表关联查询
Jun 30 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
Sep 16 PHP
PHP实现的猴王算法(猴子选大王)示例
Apr 30 PHP
Yii2语言国际化的配置教程
Aug 19 PHP
PHP常见的几种攻击方式实例小结
Apr 29 PHP
TP5框架实现一次选择多张图片并预览的方法示例
Apr 04 PHP
CI框架源码阅读,系统常量文件constants.php的配置
Feb 28 #PHP
PHP删除非空目录的函数代码小结
Feb 28 #PHP
PHP生成随机用户名和密码的实现代码
Feb 27 #PHP
PHP人民币金额数字转中文大写的函数代码
Feb 27 #PHP
PHP和.net中des加解密的实现方法
Feb 27 #PHP
php和js如何通过json互相传递数据相关问题探讨
Feb 26 #PHP
php数组的概述及分类与声明代码演示
Feb 26 #PHP
You might like
Zend Guard一些常见问题解答
2008/09/11 PHP
php中的静态变量的基本用法
2014/03/20 PHP
yii2.0框架使用 beforeAction 防非法登陆的方法分析
2019/09/11 PHP
javascript下IE与FF兼容函数收集
2008/09/17 Javascript
js动态在form上插入enctype=multipart/form-data的问题
2012/05/24 Javascript
关于javascript模块加载技术的一些思考
2014/11/28 Javascript
jQuery的观察者模式详解
2014/12/22 Javascript
深入解析JavaScript中的立即执行函数
2016/05/21 Javascript
JavaScript中闭包的写法和作用详解
2016/06/29 Javascript
AngularJS  $on、$emit和$broadcast的使用
2016/09/05 Javascript
Angularjs之filter过滤器(推荐)
2016/11/27 Javascript
浅谈jquery的html方法里包含特殊字符的处理
2016/11/30 Javascript
有关suggest快速删除后仍然出现下拉列表的bug问题
2016/12/02 Javascript
js+css3实现旋转效果
2017/01/20 Javascript
VueJS组件之间通过props交互及验证的方式
2017/09/04 Javascript
详谈构造函数加括号与不加括号的区别
2017/10/26 Javascript
使用Bootstrap4 + Vue2实现分页查询的示例代码
2017/12/21 Javascript
基于zTree树形菜单的使用实例
2017/12/25 Javascript
解决Nodejs全局安装模块后找不到命令的问题
2018/05/15 NodeJs
对layui初始化列表的CheckBox属性详解
2019/09/13 Javascript
jQuery操作元素追加内容示例
2020/01/10 jQuery
Vue.js仿Select下拉框效果
2020/02/18 Javascript
Javascript节流函数throttle和防抖函数debounce
2020/12/03 Javascript
jenkins自动构建发布vue项目的方法步骤
2021/01/04 Vue.js
[02:05:03]完美世界DOTA2联赛循环赛 LBZS VS Matador BO2 10.28
2020/10/28 DOTA
[36:05]完美世界DOTA2联赛循环赛 Forest vs DM 第一场 11.06
2020/11/06 DOTA
[01:01:52]完美世界DOTA2联赛PWL S2 GXR vs Magma 第二场 11.25
2020/11/26 DOTA
python获取文件真实链接的方法,针对于302返回码
2018/05/14 Python
Django forms表单 select下拉框的传值实例
2019/07/19 Python
python实现简单颜色识别程序
2020/02/19 Python
Python局部变量与全局变量区别原理解析
2020/07/14 Python
创新型城市实施方案
2014/03/06 职场文书
匿名检举信范文
2015/03/02 职场文书
mysql配置SSL证书登录的实现
2021/09/04 MySQL
vmware虚拟机打不开vmx文件怎么办 ?vmware虚拟机vmx文件打开方法
2022/04/08 数码科技
GO语言异常处理分析 err接口及defer延迟
2022/04/14 Golang