我试图忽略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>";
}?>
!$_SERVER['HTTP_USER_AGENT']
看起来不对。它会尝试否定一个字符串——这会给你一个布尔值,它的值永远不能包含"MSIE"(因为它唯一可能的值是零(false)和1(true)。
你可能想移动!到CCD_ 2之前。
现在意识到stristr
将采用一组操作数(用户代理字符串和"MSIE8")。为了测试第二个字符串,您需要第二个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
(不区分大小写)。
我猜您的意思是,如果是而不是IE7/IE8,您只想打印if
内部的代码。
在这种情况下,您需要:
<?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是不必要的。即使以某种方式证明严格的相等并不是真的所必需的,使用严格的检查可以帮助您记住并在代码中清楚地表明发生了什么。