Свободное сравнение strpos() с >=0 или == false не всегда возвращает правильный результат.Php

Кемеровские программисты php общаются здесь
Anonymous
Свободное сравнение strpos() с >=0 или == false не всегда возвращает правильный результат.

Сообщение Anonymous »

Я просто пытаюсь это понять...

Код: Выделить всё

$mystring = "/abc/def/hij";
$find = "/abc";

echo(strpos($mystring, $find) . "
");
if (strpos($mystring, $find) >= 0) {
echo("found");
} else {
echo("not found");
}
это даст:

Код: Выделить всё

0
found

Код: Выделить всё

$mystring = "/abc/def/hij";
$find = "/fffff";

echo(strpos($mystring, $find) . "
");
if (strpos($mystring, $find) >= 0) {
echo("found");
} else {
echo("not found");
}
выход:

Код: Выделить всё

[blank]
found
Теперь, если я изменю компаратор и использую != False вместо >= 0:

Код: Выделить всё

$mystring = "/abc/def/hij";
$find = "/fffff";

echo(strpos($mystring, $find) . "
");
if (strpos($mystring, $find) != false) {
echo("found");
} else {
echo("not found");
}
Это работает почти во всех случаях, за исключением случаев, когда я ищу подстроку в начале строки.

Это выведет «не найдено»:

Код: Выделить всё

$mystring = "/abc/def/hij";
$find = "/abc";

echo(strpos($mystring, $find) . "
");
if (strpos($mystring, $find) != false) {
echo("found");
} else {
echo("not found");
}
Итак, как мне заставить это работать? Я просто хочу знать, существует ли подстрока в строке, и это должно дать мне true, является ли подстрока началом или всей строкой.

Подробнее здесь: https://stackoverflow.com/questions/100 ... -the-corre

Вернуться в «Php»