if (strpos($_SERVER['HTTP_USER_AGENT'], '(compatible; MSIE ')!==FALSE) {
...ie specific...
}
Но! Не надо!
Редко есть веская причина для сниффинга пользовательского агента на стороне сервера. Это приносит кучу проблем, в том числе:
браузеры и другие пользовательские агенты, которые лгут о том, кто они такие, или полностью удаляют заголовок пользовательского агента, или вообще затрудняют отличить настоящий браузер от текста заголовка. . Например, указанное выше правило также обнаружит Opera, когда она подделывает IE, и IEMobile (Windows Mobile), что может вам понадобиться, а может и нет, поскольку это совсем другой браузер, чем настольный IE.
Если вы различаете пользовательский агент на стороне сервера, вы должны вернуть в ответе заголовок Vary: User-Agent
, в противном случае прокси-серверы могут кэшировать версию страницы и возвращать ее в другие браузеры, которые не подходят. Однако включение этого заголовка имеет побочный эффект, заключающийся в нарушении кеширования в IE.
В зависимости от того, чего вы пытаетесь достичь, почти всегда есть гораздо лучший способ справиться с различиями между IE и другими браузерами на стороне клиента, используя хаки CSS, JScript или условные комментарии .Какова реальная цель обнаружения IE в вашем случае?
<?php
var_dump($_SERVER['HTTP_USER_AGENT']);
var_dump(get_browser(null, true));
?>
Печать:
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040803 Firefox/0.9.3
Array
(
[browser_name_regex] => ^mozilla/5\.0 (windows; .; windows nt 5\.1; .*rv:.*) gecko/.* firefox/0\.9.*$
[browser_name_pattern] => Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:*) Gecko/* Firefox/0.9*
[parent] => Firefox 0.9
[platform] => WinXP
[browser] => Firefox
[version] => 0.9
[majorver] => 0
[minorver] => 9
[cssversion] => 2
[frames] => 1
[iframes] => 1
[tables] => 1
[cookies] => 1
[backgroundsounds] =>
[vbscript] =>
[javascript] => 1
[javaapplets] => 1
[activexcontrols] =>
[cdf] =>
[aol] =>
[beta] => 1
[win16] =>
[crawler] =>
[stripper] =>
[wap] =>
[netclr] =>
)