PHP: Internet Explorer 6, 7, 8, 또는 9의 경우
PHP에서 다음과 같은 다양한 버전의 Internet Explorer에 대해 조건을 붙이고 싶습니다.
if($browser == ie6){ //do this} elseif($browser == ie7) { //dothis } elseif...
비슷한 코드에 대해 많은 변형을 봐왔지만 간단한 if나 or other, 그리고 다른 일을 할 수 있는 매우 간단한 코딩을 찾고 있습니다.
감사해요.
편집: CSS 조건 등은 좋지 않기 때문에 사용자에게 다른 메시지를 표시하기 위해 필요합니다.
이것은 IE8 이하를 체크하는 바리에이션입니다.
if (preg_match('/MSIE\s(?P<v>\d+)/i', @$_SERVER['HTTP_USER_AGENT'], $B) && $B['v'] <= 8) {
// Browsers IE 8 and below
} else {
// All other browsers
}
IE10과 IE11 양쪽에서 계속 동작하는 버전:
preg_match('/MSIE (.*?);/', $_SERVER['HTTP_USER_AGENT'], $matches);
if(count($matches)<2){
preg_match('/Trident\/\d{1,2}.\d{1,2}; rv:([0-9]*)/', $_SERVER['HTTP_USER_AGENT'], $matches);
}
if (count($matches)>1){
//Then we're using IE
$version = $matches[1];
switch(true){
case ($version<=8):
//IE 8 or under!
break;
case ($version==9 || $version==10):
//IE9 & IE10!
break;
case ($version==11):
//Version 11!
break;
default:
//You get the idea
}
}
HTTP_USER_AGENT 서버 변수를 확인할 수 있습니다.IE에 의해 전송된 사용자 에이전트에 MSIE가 포함되어 있습니다.
if(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) { ... }
특정 버전에 대해 조건을 확장할 수 있습니다.
if(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 6.') !== false) { ... }
다음은 php에서 브라우저를 검출하기 위한 유용한 리소스입니다.http://php.net/manual/en/function.get-browser.php
다음으로 가장 간단한 예를 제시하겠습니다.
<?php
function get_user_browser()
{
$u_agent = $_SERVER['HTTP_USER_AGENT'];
$ub = '';
if(preg_match('/MSIE/i',$u_agent))
{
$ub = "ie";
}
elseif(preg_match('/Firefox/i',$u_agent))
{
$ub = "firefox";
}
elseif(preg_match('/Safari/i',$u_agent))
{
$ub = "safari";
}
elseif(preg_match('/Chrome/i',$u_agent))
{
$ub = "chrome";
}
elseif(preg_match('/Flock/i',$u_agent))
{
$ub = "flock";
}
elseif(preg_match('/Opera/i',$u_agent))
{
$ub = "opera";
}
return $ub;
}
?>
나중에 코드 안에서 이렇게 말할 수 있을 거야
$browser = get_user_browser();
if($browser == "ie"){
//do stuff
}
나는 이것을 한다.
$u = $_SERVER['HTTP_USER_AGENT'];
$isIE7 = (bool)preg_match('/msie 7./i', $u );
$isIE8 = (bool)preg_match('/msie 8./i', $u );
$isIE9 = (bool)preg_match('/msie 9./i', $u );
$isIE10 = (bool)preg_match('/msie 10./i', $u );
if ($isIE9) {
//do ie9 stuff
}
PHP에는 get_browser()라는 함수가 있습니다.이 함수는 사용자의 브라우저와 그 기능에 대한 자세한 내용과 함께 오브젝트(또는 어레이)를 반환합니다.
간단히 훑어보면 다음과 같은 코드를 알 수 있습니다.
$browser = get_browser( null, true );
if( $browser['name'] == "Firefox" )
if( $browser['majorversion'] == 4 )
echo "You're using Firefox version 4!";
이것은 확실한 방법은 아니지만(HTTP_USER_AGENT에서 읽으면 스푸핑이 가능하며 php에서 잘못 해석될 수 있기 때문에) 제가 아는 한 가장 쉬운 방법입니다.
if (isset($_SERVER['HTTP_USER_AGENT']) && preg_match("/(?i)msie|trident|edge/",$_SERVER['HTTP_USER_AGENT'])) {
// eh, IE found
}
PHP를 조사할 수도 있습니다.get_browser();
http://php.net/manual/en/function.get-browser.php
더 많은 기능에 도움이 될 수도 있습니다.
MSFT가 추천하는 javascript sniffing 코드에서 regex를 직접 사용하는 php 함수는 다음과 같습니다.
/**
* Returns the version of Internet Explorer or false
*/
function isIE(){
$isIE = preg_match("/MSIE ([0-9]{1,}[\.0-9]{0,})/",$_SERVER['HTTP_USER_AGENT'],$version);
if($isIE){
return $version[1];
}
return $isIE;
}
MSIE만을 확인하는 것만으로는 IE를 검출할 수 없습니다.IE11에서만 사용되는 "Trident"도 필요합니다.여기 버전 8에서 11까지 작동한 솔루션이 있습니다.
$agent=strtoupper($_SERVER['HTTP_USER_AGENT']);
$isIE=(strpos($agent,'MSIE')!==false || strpos($agent,'TRIDENT')!==false);
이를 수행하려면 user-agent 헤더를 해석합니다.
http://php.about.com/od/learnphp/p/http_user_agent.htm
이것은 매우 신뢰할 수 없고 3가지 방법으로 조작될 수 있으므로 주의해 주십시오.
'HTTP_USER_AGENT' 현재 요청에서 User-Agent: 헤더의 내용(있는 경우).페이지에 액세스하고 있는 사용자 에이전트를 나타내는 문자열입니다.일반적인 예는 Mozilla/4.5 [en](X11; U; Linux 2.2.9 i586)입니다.특히 이 값을 get_browser()와 함께 사용하여 페이지 출력을 사용자 에이전트의 기능에 맞게 조정할 수 있습니다.
브라우저 이름/ID는 $_SERVER에서 얻을 수 있을 겁니다.HTTP_USER_AGENT"] 변수.
다른 메시지나 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]-->
또는 다른 css의 div를 사용합니다.
<!--[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]-->
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' 또는 'ie8', 'ie9', 'ie10', 'ie11'을 반환합니다.
도움이 되었으면 좋겠다
'Trident'의 경우:
if (isset($_SERVER['HTTP_USER_AGENT']) &&
((strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) || strpos($_SERVER['HTTP_USER_AGENT'], 'Trident') !== false)) {
// IE is here :-(
}
Internet Explorer 11을 사용하고 있으며 터치스크린 PC 상에서 실행 중인 경우 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'])
삼단 기반 접근법이 더 나을 것이다.다음은 IE 8을 확인하는 빠른 기능입니다.
<?php
function is_IE8(){
if(strpos(str_replace(' ', '', $_SERVER['HTTP_USER_AGENT']),'Trident/4.0')!== FALSE){
return TRUE;
};
return FALSE;
}
?>
언급URL : https://stackoverflow.com/questions/5302302/php-if-internet-explorer-6-7-8-or-9
'programing' 카테고리의 다른 글
javascript toISOString()이 시간대 오프셋을 무시합니다. (0) | 2023.01.15 |
---|---|
regex는 정확히 n OR m 회 (0) | 2023.01.15 |
JUnit 테스트 케이스에서 MySQL을 실행하는 방법이 있습니까? (0) | 2023.01.15 |
SyntaxError: 비ASC함수가 '''을 반환할 때 파일의 II 문자 '\xa3' (0) | 2023.01.15 |
업데이트 부분에서 새 값과 이전 값을 모두 사용할 수 있도록 UPSERT를 수행하는 방법 (0) | 2023.01.06 |