23
2008.5
用PHP侦测浏览器名称版本 (438)
现在的浏览器有很多种,每种又有不同的版本,为了让网页在不同的浏览器的呈现出相同的样式,页面制做人员便使用大量的偏方(即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。
大 | 中 | 小

0 Response

