php strpos всегда возвращает false, я хочу получить правильный ответ - PullRequest
0 голосов
/ 15 декабря 2018

Я получаю проект и вижу фрагмент кода следующим образом:

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

В любом случае, я ввожу 'd' или другие параметры на странице, всегда возвращающей 'not'.Итак, как ввести правильный параметр, чтобы страница, возвращающая «существует»?

Ответы [ 3 ]

0 голосов
/ 15 декабря 2018

, если strpos найдет совпадение, оно не вернет true, но смещение - таким образом, ваш strpos($orderby,'d')===true никогда не попадет.

Попробуйте:

<?php
$orderby=$_REQUEST['orderby'];
if($o=strpos($orderby,'d')===false){
    echo "not ";
}else{
    echo "exists at offset $o";
}?>
0 голосов
/ 15 декабря 2018

strpos() никогда не вернется TRUE.Если строка найдена, она возвращает позицию.Если строка не найдена, возвращается FALSE.Поэтому вы должны сравнить с FALSE, а не TRUE.

if (strpos($orderby, 'd') === false) {
    echo "not exists";
} else {
    echo "exists";
}
0 голосов
/ 15 декабря 2018

Ваш тест не говорит о том, что он возвращает false, просто strpos() никогда не возвращает значение логического true.Вместо этого он вернет целое число с позицией найденной строки.Обычно чек будет

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