我试图忽略IE7和IE8,但是让操作员正常工作有点麻烦。
<?php
if(stristr(strtolower($_SERVER['HTTP_USER_AGENT']), "msie 8") && (strtolower($_SERVER['HTTP_USER_AGENT']), "msie 7") == false ){
echo "<script type=\"text/javascript\">
$(document).ready(function() {
// ok
});
</script>";
}?>
我的其他选项没有给我任何错误,但是没有正常运作:
<?php
if(stristr(strtolower($_SERVER['HTTP_USER_AGENT']), "msie 8" || ($_SERVER['HTTP_USER_AGENT']), "msie 7") == FALSE){
echo "<script type=\"text/javascript\">
$(document).ready(function() {
// OK
});
</script>";
}?>
答案 0 :(得分:2)
!$_SERVER['HTTP_USER_AGENT']
看起来不对劲。它试图否定一个字符串 - 它会给你一个布尔值,它的值永远不会包含'MSIE'(因为它唯一可能的值是零(假)和1(真)。
你可能想要移动!在stristr
之前。
现在意识到stristr
将采用一组操作数(用户代理字符串和“MSIE 8”)。为了测试第二个字符串,您需要第二个stristr
,如下所示:
<?php
if(!stristr($_SERVER['HTTP_USER_AGENT'], "msie 8") &&
!stristr($_SERVER['HTTP_USER_AGENT'], "msie 7"))
{
echo "<script type=\"text/javascript\">
$(document).ready(function() {
// OK
});
</script>
";
}
?>
注意,您根本不需要strtolower
,因为您使用的是stristr
(不区分大小写)。
答案 1 :(得分:0)
我猜你的意思是你只想打印if
内的代码,如果它是不是 IE7 / IE8。
在这种情况下,您需要:
<?php
if( (stristr($_SERVER['HTTP_USER_AGENT'], "msie 8") === FALSE) &&
(stristr($_SERVER['HTTP_USER_AGENT'], "msie 7") === FALSE) ) {
echo "<script type=\"text/javascript\">
$(document).ready(function() {
// ok
});
</script>";
}
?>
您错过了对stristr
的第二次通话。同样如cHao所述,您需要检查严格的相等性(类型),并且不需要strtolower。即使它以某种方式证明严格的相等不是真正必要,使用严格的检查可以帮助你记住并在代码中清楚地说明发生了什么。