php strpos 总是返回 false,我想得到正确的答案[重复]

问题描述 投票:0回答:3

我得到一个项目,我看到一段代码如下:

<?php
$orderby=$_REQUEST['orderby'];
if(strpos($orderby,'d')===true){
    echo "exists";
}else{
    echo "not ";
}?>

无论如何,我输入“d”或其他参数,页面总是返回“not”。 那么,如何输入正确的参数使页面返回“存在”呢?

php strpos
3个回答
4
投票

strpos()
永远无法返回
TRUE
。如果找到该字符串,则返回位置。如果未找到该字符串,则返回
FALSE
。所以你应该比较
FALSE
,而不是
TRUE

if (strpos($orderby, 'd') === false) {
    echo "not exists";
} else {
    echo "exists";
}

2
投票

您的测试并不是说它正在返回

false
,只是
strpos()
永远不会返回布尔值
true
。 相反,它将返回一个整数以及找到的字符串的位置。 通常支票是

if(strpos($orderby,'d') !== false){
    echo "exists";
}else{
    echo "not ";
}

1
投票

如果

strpos
找到匹配项,它不会返回
true
而是返回偏移量 - 所以你的
strpos($orderby,'d')===true
永远不会被击中。

试试这个:

<?php
$orderby=$_REQUEST['orderby'];
if($o=strpos($orderby,'d')===false){
    echo "not ";
}else{
    echo "exists at offset $o";
}?>
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.