PHP判断浏览器类型和浏览器语言(附各国语言简写代码)
用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 越南 -越南
?
?
?
?
?
?
?