用PHP侦测浏览器名称版本

现在的浏览器有很多种,每种又有不同的版本,为了让网页在不同的浏览器的呈现出相同的样式,页面制做人员便使用大量的偏方(即hack,我把它叫做偏方)。做这种事情是很痛苦的,做过的人都知道。于是有些人分别针对不同的浏览器编写相对应的CSS文件,然后用IE条件注释方式来判断载入,代码如下:

<link href="common.css" type="text/css" media="screen, projection" />
<!--[if IE 7]><link href="ie7.css" type="text/css" media="screen, projection" />
<![endif]--><!--[if IE 6]><link href="ie6.css" type="text/css" media="screen, projection" />
<![endif]-->

其实也可以用后台动态语言来判断浏览器种类的。在PHP中可以使用函数“$_SERVER['HTTP_USER_AGENT']”,它和JS中的“navigator.userAgent”函数具有相似的功能,而且我在PHP官网上找到一篇介绍介绍get_browser函数的文章,在里面找到了不少判断浏览器种类的代码,现转一个在这里:

<?php
//        _______
// ----- | CONF. |
// add new browsers in lower case here, separated
// by spaces -  order is important: from left to
// right browser family becomes more precise$browsers = "mozilla msie gecko firefox ";
$browsers.= "konqueror safari netscape navigator ";
$browsers.= "opera mosaic lynx amaya omniweb";
//        _______
// ----- |PROCESS|
$browsers = split(" ", $browsers);
$nua = strToLower( $_SERVER['HTTP_USER_AGENT']);
$l = strlen($nua);
for ($i=0; $i<count($browsers); $i++){
	$browser = $browsers[$i];
	$n = stristr($nua, $browser);
	if(strlen($n)>0){
		$GLOBALS["ver"] = "";
		$GLOBALS["nav"] = $browser;
		$j=strpos($nua, $GLOBALS["nav"])+$n+strlen($GLOBALS["nav"])+1;
		for (; $j<=$l; $j++){
			$s = substr ($nua, $j, 1);
			if(is_numeric($GLOBALS["ver"].$s) )
			$GLOBALS["ver"] .= $s;
			else
			break;
		}
	}
}
//        _______

// ----- |  USE  |

echo("<pre>Your browser is: ");
echo($GLOBALS["nav"] . " " . $GLOBALS["ver"] . "</pre>");
?>

如果你用的是IE6,页面会显示:Your browser is: msie 6.0;如果用的是火狐2,会显示:Your browser is: firefox 2.0。

  1. 还没有评论

  1. 还没有引用通告。