PHP: если Internet Explorer 6, 7, 8 или 9 - PullRequest
84 голосов
/ 14 марта 2011

Я хочу сделать условное выражение в PHP для разных версий Internet Explorer в соответствии с:

if($browser == ie6){ //do this} elseif($browser == ie7) { //dothis } elseif...

Я видел много вариаций в похожем коде, но искал что-то сверхпростое, которое очень легко кодировать, чтобы делать простые, если и еще, и делать разные вещи.

Спасибо

РЕДАКТИРОВАТЬ: мне нужно, чтобы это показывало пользователям несколько разных сообщений, поэтому условия CSS и т. Д. Не годятся.

Ответы [ 17 ]

2 голосов
/ 14 марта 2011

'HTTP_USER_AGENT' Содержимое User-Agent: заголовок из текущего запроса, если он есть. Это строка, обозначающая пользовательский агент, который обращается к странице. Типичный пример: Mozilla / 4.5 [en] (X11; U; Linux 2.2.9 i586). Среди прочего, вы можете использовать это значение с get_browser (), чтобы адаптировать вывод вашей страницы к возможностям пользовательского агента.

Поэтому я предполагаю, что вы сможете получить имя / идентификатор браузера из переменной $ _SERVER ["HTTP_USER_AGENT"].

2 голосов
/ 14 марта 2011

Это можно сделать с помощью синтаксического анализа заголовка агента пользователя:

http://php.about.com/od/learnphp/p/http_user_agent.htm

Будьте осторожны, поскольку это не очень надежно и может быть подделано.

1 голос
/ 10 марта 2016

но все же полезно - и работает с IE11! Вот еще один короткий способ вернуть обычные браузеры для класса css:

function get_browser()
{
    $browser = '';
    $ua = strtolower($_SERVER['HTTP_USER_AGENT']);
    if (preg_match('~(?:msie ?|trident.+?; ?rv: ?)(\d+)~', $ua, $matches)) $browser = 'ie ie'.$matches[1];
    elseif (preg_match('~(safari|chrome|firefox)~', $ua, $matches)) $browser = $matches[1];

    return $browser;
}

Таким образом, эта функция возвращает: 'safari' или 'firefox' или 'chrome', или 'ie ie8', 'ie ie9', 'ie ie10', 'ie ie11'.

надеюсь, это поможет

1 голос
/ 08 октября 2013

Вы можете использовать что-то подобное для разных сообщений или div / css

<!--[if IE 6]>
<style type="text/css">
div.ie6 { display:block; }
</style>
<![endif]-->

<!--[if IE 7]>
<style type="text/css">
div.ie7 { display:block; }
</style>
<![endif]-->

<!--[if IE 8]>
<style type="text/css">
div.ie8 { display:block; }
</style>
<![endif]-->

<!--[if IE 9]>
message1
<![endif]-->

<!--[if !IE 6]>
message2
<![endif]-->

<!--[if lt IE 8]>
message3
<![endif]-->

ИЛИ использовать разные div css

<!--[if lte IE 8]>
<style type="text/css">
div.lteie8 { display:block; }
</style>
<![endif]-->

<!--[if gt IE 6]>
<style type="text/css">
div.gtie6 { display:block; }
</style>
<![endif]-->

<!--[if gte IE 6]>
<style type="text/css">
div.gteie6 { display:block; }
</style>
<![endif]-->
0 голосов
/ 16 апреля 2015

Обратите внимание на случай в «Trident»:

if (isset($_SERVER['HTTP_USER_AGENT']) &&
    ((strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) || strpos($_SERVER['HTTP_USER_AGENT'], 'Trident') !== false)) {   
     // IE is here :-(
    }
0 голосов
/ 01 октября 2015

если у вас Internet Explorer 11 и он работает на компьютере с сенсорным экраном, вы должны использовать: preg_match ('/ Trident / 7.0; Touch; rv: 11.0 /', $ _SERVER ['HTTP_USER_AGENT']) вместо: preg_match ('/ Trident / 7.0; rv: 11.0 /', $ _SERVER ['HTTP_USER_AGENT'])

0 голосов
/ 21 августа 2014

Подход, основанный на трендах, был бы лучше. Вот быстрая функция для проверки IE 8.

<?php
function is_IE8(){
   if(strpos(str_replace(' ', '', $_SERVER['HTTP_USER_AGENT']),'Trident/4.0')!== FALSE){
       return TRUE;
   };
   return FALSE; 
} 
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...