有没有一种方法可以使用PHP来检测页面是否在IE6中加载?
有没有一种方法可以使用PHP来检测页面是否在IE6中加载?
更简单的东西:
if(stristr(strtolower($_SERVER['HTTP_USER_AGENT']), "msie 6.0")) {
// IE6? Aren't you out of fashion yet?
}
谢谢大家,最终我创建了以下函数并根据需要调用它:
// IE6 Check
function isIE() {
$userAgent = strtolower($_SERVER['HTTP_USER_AGENT']);
if (ereg("msie 6.0", $userAgent)) {
return true;
} else {
return false;
}
}
function isIE($versions=array()) {
if (!empty($versions))
$versions = '('.implode('|',$versions).')';
else
$versions = '1?\d';
$ua = $_SERVER['HTTP_USER_AGENT'];
$is_not_opera = false===stripos($ua, 'opera');
return $is_not_opera && preg_match('/\bmsie '.$versions.'\./i', $ua);
}
使用:
$is_ie = isIE(); //Any version
$is_ie_7 = isIE(array(7)); //IE 7
$is_old_id = isIE(array(6,7));//IE 7 and 8
<?xml>
声明。结果发现,IE6只检查文档的第一行以进行doctype嗅探,这意味着如果存在<?xml>
字符串,则IE6将渲染为quirks模式,而不管在<?xml>
声明之后的doctype如何。//check if IE 6 or less
$not_lte_ie6 = true;
$ua = strtolower($_SERVER['HTTP_USER_AGENT']);
if(strpos($ua,'msie') !== FALSE) {
if(strpos($ua,'opera') === FALSE) {
if(preg_match('/(?i)msie [1-6]/',$ua)) $not_lte_ie6 = false;
}
}
if ($not_lte_ie6)
echo "<?xml version='1.0' encoding='UTF-8'?>\n";
function isOldIE() {
// don't support IE6 or below
return preg_match('/MSIE [1-6]/', $_SERVER['HTTP_USER_AGENT']);
}
函数应该使用 preg_match() 而不是 preg(),但很好!
注意,IE8在其用户代理字符串中还指定了与IE6兼容的规范。