我的代码只是从IE版本1到9 ...
如果我将[1-9]更改为[1-11]则无效:/
有人能帮助我吗?
function ieCheck()
{
if(preg_match('/(?i)msie [1-9]/',$_SERVER['HTTP_USER_AGENT']))
{
echo "This website is not optimised for IE";
exit;
}
}
答案 0 :(得分:6)
首先,[1-11]
并不代表“1到11之间的任何数字”,因为那不是how regular expression syntax works。相反,[0-9]+
将是简单性和技术上正确的良好权衡。
其次,IE11的用户代理字符串与所有版本< = 10的用户代理字符串完全不同,您需要一个单独的正则表达式来解析它;您需要的信息在MSDN上提供。
最后,考虑到从9开始的IE版本是非常符合标准的(对于10和11更是如此),你应该再看看你在这里做了什么。我非常怀疑,例如IE 10不会呈现您的页面正确的内容。
答案 1 :(得分:3)
正则表达式中的字符块[1-9]只是匹配该位置的数字。由于“msie 11”在该位置有两个位,因此您需要匹配“一个或多个”来覆盖所有情况。
将你的正则表达式更改为它,它应该可以工作:
/(?i)msie [0-9]+/
那将匹配
IE11的报告方式不同,因此在这种情况下您需要查找字符串“Trident”:
Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko
正则表达式:
/(?i)(msie [0-9]+)|(Trident/[0-9]+)/
答案 2 :(得分:0)
使用PHP
<?php
if(isset($_SERVER['HTTP_USER_AGENT'])){
$agent = $_SERVER['HTTP_USER_AGENT'];
if(strlen(strstr($agent,"MSIE")) > 10 ){
echo "sorry: not compatible";
}}
?>
使用PHP(特定)
<?php
if(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE)
echo 'Internet explorer';
elseif(strpos($_SERVER['HTTP_USER_AGENT'], 'Firefox') !== FALSE)
echo 'Mozilla Firefox';
elseif(strpos($_SERVER['HTTP_USER_AGENT'], 'Chrome') !== FALSE)
echo 'Google Chrome';
else
echo 'Something else';
?>
使用javascript