2016-03-07 2 views
1

Я пытаюсь использовать strpos для поиска строки внутри другой строки, но по какой-то причине она не работает для определенной строки, даже если она работает для другой. Что я делаю не так?strpos не работает для определенной строки

<?php 

if (strpos("show me how to dance", "show me")) { 
echo "true1"; 
} 
if (strpos("my name is name", "name")) { 
echo "true2"; 
} 

?> 

Результат:

true2 

Ожидаемый результат:

true1true2 
+4

Невозможно! В вашем коде отображается «true2». Потому что позиция '0' оценивается как' false'. – AbraCadaver

+0

http://ideone.com/7f88Py ** true2 ** –

+0

@Dagon Извините, это была опечатка. Я имел в виду истину2. Но я ожидаю как true1, так и true2. – frosty

ответ

6

strpos возвращает указатель вхождения в строке (или ложным, если он не найден) , Когда этот индекс равен 0, условие: (strpos("show me how to dance", "show me")) оценивается как false (потому что в PHP: 0 == false истинно). Чтобы убедиться, что игла найдена (даже при индексе 0), вам необходимо строгое сравнение:

if (strpos("show me how to dance", "show me") !== false) 
+0

Ahhh ... Это странно. Разве это не должно быть по умолчанию? – frosty

+0

@frosty: PHP не является строго типизированным языком (следствия типа типа неявные), иногда это преимущество, а иногда ... –

+1

@frosty no, strpos не подтверждает, что строка содержит подстроку, она возвращает индекс первого вхождения , его две разные задачи –

Смежные вопросы