Свободное сравнение 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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