设为首页 收藏本站
查看: 868|回复: 0

[经验分享] PHP判断浏览器类型和浏览器语言(附各国语言简写代码)

[复制链接]

尚未签到

发表于 2017-4-14 06:48:00 | 显示全部楼层 |阅读模式
  用php语言来判断浏览器类型其实很简单。
  

因为浏览器在和服务器连接时候都会先发送一些包含自己信息的内容(浏览器类型、语言啦)。
  这里我们主要分析的是_SERVER["HTTP_USER_AGENT"](浏览器类型)和_SERVER["HTTP_ACCEPT_LANGUAGE"](浏览器语言)。
  我们所要做的就是把这些内容读出来,然后用strpos或者preg_match函数来对比就可以了。
  判断浏览器类型:

<?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"]。
  或者:

function getPreferredLanguage() {
$langs = array();
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
// break up string into pieces (languages and q factors)
preg_match_all('/([a-z]{1,8}(-[a-z]{1,8})?)s*(;s*qs*=s*(1|0.[0-9]+))?/i',
$_SERVER['HTTP_ACCEPT_LANGUAGE'], $lang_parse);
if (count($lang_parse[1])) {
// create a list like "en" => 0.8
$langs = array_combine($lang_parse[1], $lang_parse[4]);
// set default to 1 for any without q factor
foreach ($langs as $lang => $val) {
if ($val === '') $langs[$lang] = 1;
}
// sort list based on value
arsort($langs, SORT_NUMERIC);
}
}
//extract most important (first)
foreach ($langs as $lang => $val) { break; }
//if complex language simplify it
if (stristr($lang,"-")) {$tmp = explode("-",$lang); $lang = $tmp[0]; }
return $lang;
}
 

  • af     公用荷兰语
  • af-ZA     公用荷兰语 – 南非
  • sq     阿尔巴尼亚
  • sq-AL     阿尔巴尼亚 -阿尔巴尼亚
  • ar     阿拉伯语
  • ar-DZ     阿拉伯语 -阿尔及利亚
  • ar-BH     阿拉伯语 -巴林
  • ar-EG     阿拉伯语 -埃及
  • ar-IQ     阿拉伯语 -伊拉克
  • ar-JO     阿拉伯语 -约旦
  • ar-KW     阿拉伯语 -科威特
  • ar-LB     阿拉伯语 -黎巴嫩
  • ar-LY     阿拉伯语 -利比亚
  • ar-MA     阿拉伯语 -摩洛哥
  • ar-OM     阿拉伯语 -阿曼
  • ar-QA     阿拉伯语 -卡塔尔
  • ar-SA     阿拉伯语 – 沙特阿拉伯
  • ar-SY     阿拉伯语 -叙利亚共和国
  • ar-TN     阿拉伯语 -北非的共和国
  • ar-AE     阿拉伯语 – 阿拉伯联合酋长国
  • ar-YE     阿拉伯语 -也门
  • hy     亚美尼亚
  • hy-AM     亚美尼亚的 -亚美尼亚
  • az     Azeri
  • az-AZ-Cyrl     Azeri-(西里尔字母的) 阿塞拜疆
  • az-AZ-Latn     Azeri(拉丁文)- 阿塞拜疆
  • eu     巴斯克
  • eu-ES     巴斯克 -巴斯克
  • be     Belarusian
  • be-BY     Belarusian-白俄罗斯
  • bg     保加利亚
  • bg-BG     保加利亚 -保加利亚
  • ca     嘉泰罗尼亚
  • ca-ES     嘉泰罗尼亚 -嘉泰罗尼亚
  • zh-HK     华 – 香港的 SAR
  • zh-MO     华 – 澳门的 SAR
  • zh-CN     华 -中国
  • zh-CHS     华 (单一化)
  • zh-SG     华 -新加坡
  • zh-TW     华 -台湾
  • zh-CHT     华 (传统的)
  • hr     克罗埃西亚
  • hr-HR     克罗埃西亚 -克罗埃西亚
  • cs     捷克
  • cs-CZ     捷克 – 捷克
  • da     丹麦文
  • da-DK     丹麦文 -丹麦
  • div     Dhivehi
  • div-MV     Dhivehi-马尔代夫
  • nl     荷兰
  • nl-BE     荷兰 -比利时
  • nl-NL     荷兰 – 荷兰
  • en     英国
  • en-AU     英国 -澳洲
  • en-BZ     英国 -伯利兹
  • en-CA     英国 -加拿大
  • en-CB     英国 -加勒比海
  • en-IE     英国 -爱尔兰
  • en-JM     英国 -牙买加
  • en-NZ     英国 – 新西兰
  • en-PH     英国 -菲律宾共和国
  • en-ZA     英国 – 南非
  • en-TT     英国 – 千里达托贝哥共和国
  • en-GB     英国 – 英国
  • en-US     英国 – 美国
  • en-ZW     英国 -津巴布韦
  • et     爱沙尼亚
  • et-EE     爱沙尼亚的 -爱沙尼亚
  • fo     Faroese
  • fo-FO     Faroese- 法罗群岛
  • fa     波斯语
  • fa-IR     波斯语 -伊朗王国
  • fi     芬兰语
  • fi-FI     芬兰语 -芬兰
  • fr     法国
  • fr-BE     法国 -比利时
  • fr-CA     法国 -加拿大
  • fr-FR     法国 -法国
  • fr-LU     法国 -卢森堡
  • fr-MC     法国 -摩纳哥
  • fr-CH     法国 -瑞士
  • gl     加利西亚
  • gl-ES     加利西亚 -加利西亚
  • ka     格鲁吉亚州
  • ka-GE     格鲁吉亚州 -格鲁吉亚州
  • de     德国
  • de-AT     德国 -奥地利
  • de-DE     德国 -德国
  • de-LI     德国 -列支敦士登
  • de-LU     德国 -卢森堡
  • de-CH     德国 -瑞士
  • el     希腊
  • el-GR     希腊 -希腊
  • gu     Gujarati
  • gu-IN     Gujarati-印度
  • he     希伯来
  • he-IL     希伯来 -以色列
  • hi     北印度语
  • hi-IN     北印度的 -印度
  • hu     匈牙利
  • hu-HU     匈牙利的 -匈牙利
  • is     冰岛语
  • is-IS     冰岛的 -冰岛
  • id     印尼
  • id-ID     印尼 -印尼
  • it     意大利
  • it-IT     意大利 -意大利
  • it-CH     意大利 -瑞士
  • ja     日本
  • ja-JP     日本 -日本
  • kn     卡纳达语
  • kn-IN     卡纳达语 -印度
  • kk     Kazakh
  • kk-KZ     Kazakh-哈萨克
  • kok     Konkani
  • kok-IN     Konkani-印度
  • ko     韩国
  • ko-KR     韩国 -韩国
  • ky     Kyrgyz
  • ky-KZ     Kyrgyz-哈萨克
  • lv     拉脱维亚
  • lv-LV     拉脱维亚的 -拉脱维亚
  • lt     立陶宛
  • lt-LT     立陶宛 -立陶宛
  • mk     马其顿
  • mk-MK     马其顿 -FYROM
  • ms     马来
  • ms-BN     马来 -汶莱
  • ms-MY     马来 -马来西亚
  • mr     马拉地语
  • mr-IN     马拉地语 -印度
  • mn     蒙古
  • mn-MN     蒙古 -蒙古
  • no     挪威
  • nb-NO     挪威 (Bokm?l) – 挪威
  • nn-NO     挪威 (Nynorsk)- 挪威
  • pl     波兰
  • pl-PL     波兰 -波兰
  • pt     葡萄牙
  • pt-BR     葡萄牙 -巴西
  • pt-PT     葡萄牙 -葡萄牙
  • pa     Punjab 语
  • pa-IN     Punjab 语 -印度
  • ro     罗马尼亚语
  • ro-RO     罗马尼亚语 -罗马尼亚
  • ru     俄国
  • ru-RU     俄国 -俄国
  • sa     梵文
  • sa-IN     梵文 -印度
  • sr-SP-Cyrl     塞尔维亚 -(西里尔字母的) 塞尔维亚共和国
  • sr-SP-Latn     塞尔维亚 (拉丁文)- 塞尔维亚共和国
  • sk     斯洛伐克
  • sk-SK     斯洛伐克 -斯洛伐克
  • sl     斯洛文尼亚
  • sl-SI     斯洛文尼亚 -斯洛文尼亚
  • es     西班牙
  • es-AR     西班牙 -阿根廷
  • es-BO     西班牙 -玻利维亚
  • es-CL     西班牙 -智利
  • es-CO     西班牙 -哥伦比亚
  • es-CR     西班牙 – 哥斯达黎加
  • es-DO     西班牙 – 多米尼加共和国
  • es-EC     西班牙 -厄瓜多尔
  • es-SV     西班牙 – 萨尔瓦多
  • es-GT     西班牙 -危地马拉
  • es-HN     西班牙 -洪都拉斯
  • es-MX     西班牙 -墨西哥
  • es-NI     西班牙 -尼加拉瓜
  • es-PA     西班牙 -巴拿马
  • es-PY     西班牙 -巴拉圭
  • es-PE     西班牙 -秘鲁
  • es-PR     西班牙 – 波多黎各
  • es-ES     西班牙 -西班牙
  • es-UY     西班牙 -乌拉圭
  • es-VE     西班牙 -委内瑞拉
  • sw     Swahili
  • sw-KE     Swahili-肯尼亚
  • sv     瑞典
  • sv-FI     瑞典 -芬兰
  • sv-SE     瑞典 -瑞典
  • syr     Syriac
  • syr-SY     Syriac-叙利亚共和国
  • ta     坦米尔
  • ta-IN     坦米尔 -印度
  • tt     Tatar
  • tt-RU     Tatar-俄国
  • te     Telugu
  • te-IN     Telugu-印度
  • th     泰国
  • th-TH     泰国 -泰国
  • tr     土耳其语
  • tr-TR     土耳其语 -土耳其
  • uk     乌克兰
  • uk-UA     乌克兰 -乌克兰
  • ur     Urdu
  • ur-PK     Urdu-巴基斯坦
  • uz     Uzbek
  • uz-UZ-Cyrl     Uzbek-(西里尔字母的) 乌兹别克斯坦
  • uz-UZ-Latn     Uzbek(拉丁文)- 乌兹别克斯坦
  • vi     越南
  • vi-VN     越南 -越南

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-364623-1-1.html 上篇帖子: FLEX 与现有开发语言(C#,PHP,JAVA)之间的通信方法 下篇帖子: php 设计模式-数据映射模式(应用程序与数据库交互模式)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表