2013-11-29 3 views
-6

В следующем коде, если я установил $what в «красный», он не находит его, тогда как он находит зеленый и синий. Почему и как заставить его найти красное?strpos не находит одно слово в строке

$where = 'red,green,blue'; 

$what = 'blue'; 

if (strpos($where, $what) == true) { 
    echo 'found'; 
} 
+4

Пожалуйста, прочитайте большую красную коробку и примеры на [странице руководства для 'strpos'] (http://php.net/strpos). – deceze

+0

Если я изменил == на ===, он больше ничего не найдет, а не просто красный (если это то, что вы имели в виду). –

+0

Поскольку 'strpos' также никогда не возвращает' true', поэтому '=== true' всегда будет false. Опять же, пожалуйста, ознакомьтесь с фактической документацией и примерами. – deceze

ответ

1

strpos возвращает индекс найденной строки. В этом случае индекс равен 0, и ваш чек на == true не будет выполнен. Попытка:

strpos($where, $what) !== false 

documentation содержит дополнительную информацию.

1

strpos вернет false, если вашей строки нет. В противном случае он возвращает позицию вашей строки.

В этом случае «красный» находится в начале строки, что означает, что он находится в положении 0; и 0 оценивается как false.

Вам нужно сделать логическое сравнение на результат:

if(strpos($word, 'red') === false) 
Смежные вопросы