Могу ли я обнаружить IE6 с PHP? - PullRequest
48 голосов
/ 23 марта 2009

Есть ли способ использовать PHP для определения, загружается ли страница с использованием IE6?

Ответы [ 17 ]

1 голос
/ 23 марта 2009

Спасибо, ребята, в итоге я создал следующую функцию и вызвал ее по мере необходимости:

// IE6 Check
function isIE() {
  $userAgent = strtolower($_SERVER['HTTP_USER_AGENT']);
  if (ereg("msie 6.0", $userAgent)) {
    return true;
  } else {
    return false;
  }
}
1 голос
/ 23 ноября 2010

Что-то попроще:

if(stristr(strtolower($_SERVER['HTTP_USER_AGENT']), "msie 6.0")) {
    // IE6? Aren't you out of fashion yet?
}
1 голос
/ 06 июня 2012
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 голосов
/ 26 января 2010

Примечание. IE8 также указывает, что он совместим с IE6 в своей строке user-agent.

0 голосов
/ 23 апреля 2010

очень полезная тема. Я использовал это, чтобы скрыть объявление <?xml> для IE6. Оказывается, IE6 проверяет только первую строку документа на предмет сниффинга, что означает, что при наличии строки <?xml> IE6 будет отображаться в режиме причуд независимо от типа документа после объявления <?xml>

Я не уверен, важно ли еще включать проверку оперы, но все равно включил ее.

//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 голосов
/ 30 сентября 2009

Функция - preg_match () вместо preg (), но хорошо!

0 голосов
/ 01 декабря 2010
function isOldIE() {
    // don't support IE6 or below
    return preg_match('/MSIE [1-6]/', $_SERVER['HTTP_USER_AGENT']);
}
...