我能用PHP检测IE6吗?

48

有没有一种方法可以使用PHP来检测页面是否在IE6中加载?


你为什么想要这样做? - staticsan
4
哈哈,让我们消灭IE6吧!http://www.bringdownie6.com/ - lock
19
由于老旧且开发耗时,有时您只想将用户重定向到糟糕且老式的网站版本。 - Ryan Florence
我想在我的网站上添加一条消息,告诉IE6用户更新他们的浏览器。 - ddonche
17个回答

1

更简单的东西:

if(stristr(strtolower($_SERVER['HTTP_USER_AGENT']), "msie 6.0")) {
    // IE6? Aren't you out of fashion yet?
}

1

谢谢大家,最终我创建了以下函数并根据需要调用它:

// IE6 Check
function isIE() {
  $userAgent = strtolower($_SERVER['HTTP_USER_AGENT']);
  if (ereg("msie 6.0", $userAgent)) {
    return true;
  } else {
    return false;
  }
}

快速提示:在PHP中使用preg函数而不是ereg,它们更快。http://uk.php.net/manual/en/function.preg-match.php - DisgruntledGoat
4
不要使用正则表达式函数来检查字符串是否存在,如上方的答案建议,请使用strpos函数。把那个想法划掉。 - DisgruntledGoat

1
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

0
非常有用的线程。我用它来隐藏IE6的<?xml>声明。结果发现,IE6只检查文档的第一行以进行doctype嗅探,这意味着如果存在<?xml>字符串,则IE6将渲染为quirks模式,而不管在<?xml>声明之后的doctype如何。
我不确定是否需要包括一个Opera检查,但已经包括了。
//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";

0
function isOldIE() {
    // don't support IE6 or below
    return preg_match('/MSIE [1-6]/', $_SERVER['HTTP_USER_AGENT']);
}

-1

函数应该使用 preg_match() 而不是 preg(),但很好!


-1

注意,IE8在其用户代理字符串中还指定了与IE6兼容的规范。


最近有个用户联系我说他们正在使用IE8,但我检测到它是IE6。他们的用户代理字符串是:Mozilla/4.0(兼容;MSIE 8.0;Windows NT 5.1;Trident/4.0;Mozilla/4.0(兼容;MSIE 6.0;Windows NT 5.1;SV1); .NET CLR 2.0.50727)。 - neave
我研究了一下,似乎只有在IE兼容视图下才会发生这种情况。 - Jonathan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接