PHP get_browser: как отличить ie7 от ie6?

Есть ли способ отличить IE7 от IE6, используя функцию PHP get_browser()?


person montooner    schedule 25.06.2009    source источник


Ответы (5)


Вы можете сделать это так:

$browser = get_browser();

if($browser->browser == 'IE' && $browser->majorver == 6) {
    echo "IE6";
} elseif($browser->browser == 'IE' && $browser->majorver == 7) {
    echo "IE7";
}

Быстрый просмотр официальной документации get_browser() поможет ответить на ваш вопрос. . Всегда читайте документацию перед этим.

person Andrew Moore    schedule 25.06.2009
comment
Вам нужно == в сравнении с «IE»? - person Robert Gowland; 07.05.2010
comment
get_browser(): директива browscap ini не установлена - person Nir O.; 25.05.2012

Я читал, что get_browser() — относительно медленная функция, поэтому я искал что-то более быстрое. Этот код проверяет наличие MSIE 7.0 и выводит "Otay!" если правда. Это в основном тот же ответ, что и предыдущий пост, только более краткий. Довольно простой оператор if:

<?php 
if(strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 7.0'))
    echo 'Otay!';
?>
person Jedidiah    schedule 13.06.2012

Ниже приведен полный пример, взятый из здесь.

$browser = get_browser();

switch ($browser->browser) {
    case "IE":
        switch ($browser->majorver) {
            case 7:
                echo '<link href="ie7.css" rel="stylesheet" type="text/css" />';
                break;
            case 6:
            case 5:
                echo '<link href="ie5plus.css" rel="stylesheet" type="text/css" />';
                break;
            default:
                echo '<link href="ieold.css" rel="stylesheet" type="text/css" />';
        }

        break;

    case "Firefox":
    case "Mozilla":
        echo '<link href="gecko.css" rel="stylesheet" type="text/css" />';
        break;

    case "Netscape":
        if ($browser->majorver < 5) {
            echo '<link href="nsold.css" rel="stylesheet" type="text/css" />';
        } else {
            echo '<link href="gecko.css" rel="stylesheet" type="text/css" />';
        }
        break;

    case "Safari":
    case "Konqueror":
        echo '<link href="gecko.css" rel="stylesheet" type="text/css" />';
        break;

    case "Opera":
        echo '<link href="opera.css" rel="stylesheet" type="text/css" />';
        break;

    default:
        echo '<link href="unknown.css" rel="stylesheet" type="text/css" />';
}
person micmoo    schedule 25.06.2009

Если ваша логика заключается в том, чтобы решить, какие таблицы стилей или скрипты включить, возможно, стоит пойти по маршруту HTML с условными комментариями:

<!--[if IE 6]>
According to the conditional comment this is Internet Explorer 6<br />
<![endif]-->
<!--[if IE 7]>
According to the conditional comment this is Internet Explorer 7<br />
<![endif]-->

Таким образом вы обойдете любые пользовательские строки браузера и тому подобное. Дополнительные сведения см. на странице QuirksMode.

person Simon Scarfe    schedule 25.06.2009

Я нашел другое, действительно простое решение для условного выражения PHP IE6, которое я смог отредактировать для своих целей:

<?php  

// IE6 string from user_agent  
 $ie6 = "MSIE 6.0";  

// detect browser  
 $browser = $_SERVER['HTTP_USER_AGENT'];  

 // yank the version from the string  
 $browser = substr("$browser", 25, 8);  

 // if IE6 set the $alert   
 if($browser == $ie6){ 
      // put your code here    
 }  
 ?>  

Полный сценарий можно найти здесь:

http://www.thatgrafix.com/php_detect/

person Marcy Sutton    schedule 24.08.2009