我得到一个项目,我看到一段代码如下:
<?php
$orderby=$_REQUEST['orderby'];
if(strpos($orderby,'d')===true){
echo "exists";
}else{
echo "not ";
}?>
无论如何,我输入“d”或其他参数,页面总是返回“not”。 那么,如何输入正确的参数使页面返回“存在”呢?
strpos()
永远无法返回TRUE
。如果找到该字符串,则返回位置。如果未找到该字符串,则返回 FALSE
。所以你应该比较FALSE
,而不是TRUE
。
if (strpos($orderby, 'd') === false) {
echo "not exists";
} else {
echo "exists";
}
您的测试并不是说它正在返回
false
,只是 strpos()
永远不会返回布尔值 true
。 相反,它将返回一个整数以及找到的字符串的位置。 通常支票是
if(strpos($orderby,'d') !== false){
echo "exists";
}else{
echo "not ";
}
如果
strpos
找到匹配项,它不会返回 true
而是返回偏移量 - 所以你的 strpos($orderby,'d')===true
永远不会被击中。
试试这个:
<?php
$orderby=$_REQUEST['orderby'];
if($o=strpos($orderby,'d')===false){
echo "not ";
}else{
echo "exists at offset $o";
}?>