日期:2014-05-17  浏览次数:20655 次

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