用于IE 10.0的PHP UserAgent不匹配

时间:2013-08-16 09:10:53

标签: php windows internet-explorer redirect user-agent

PHP重定向应适用于IE 8及更低版本。版本9工作正常,但IE 10.0不能使用此代码(看起来像IE 10.0被解雇等):

if ( preg_match("/(?i)msie [1-8]/",$_SERVER['HTTP_USER_AGENT'])) {
    header("Location: http://www.XYXYXYX.com");
    }

我的目标是,重定向应仅适用于MS IE 8及以下版本。

非常感谢。


EDIT2 / SOLUTION:

我应该将我的代码更改为:

if ( preg_match("/(?i)msie [1-8]\./",$_SERVER['HTTP_USER_AGENT'])) {
header("Location: http://www.XYXYXYX.com");
}

尾随点确保版本号只有一位数。

3 个答案:

答案 0 :(得分:3)

我认为更可靠的重定向IE的方法是使用条件HTML语句通过javascript来实现:

<!--[if lte IE8]>
<script>
    window.location.assign('http://www.XYXYXYX.com')
</script>
<![endif]-->

答案 1 :(得分:1)

确保检查完整版本号。

if ( preg_match("/(?i)msie [1-8]\.0/",$_SERVER['HTTP_USER_AGENT'])) {
    header("Location: http://www.XYXYXYX.com");
}

请注意要检查的“.0”后缀。这样,您永远不需要为可能出现的10,20,30甚至80版本再次更改代码。

啊,好吧,IE 5.5一旦发布......

if ( preg_match("/(?i)msie [1-8]\./",$_SERVER['HTTP_USER_AGENT'])) {
    header("Location: http://www.XYXYXYX.com");
}

检查一位数后,有一个点。如果它不是一个点,它可能是一个两位数版本号的数字,如“10”。

答案 2 :(得分:-1)

preg_match('/(?i)msie (6|7|8|9|10)/',$_SERVER['HTTP_USER_AGENT'])

 if(preg_match('/(?i)msie [1-9]/',$_SERVER['HTTP_USER_AGENT']))
{
    // if IE <= 10
   echo "version is less than 10"; //rest of your code
} else  if(preg_match('/(?i)msie [10]/',$_SERVER['HTTP_USER_AGENT']))
{
    // if IE = 10
   echo "version is IE 10"; //rest of your code
}
else
{
    // if not 10
     echo " other browser"; //rest of your code

}