Вопрос по поводу strpos в PHP - PullRequest
2 голосов
/ 17 июня 2009

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

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

echo(strpos($mystring, $find) . "<br>");
if (strpos($mystring, $find) >= 0) {
    echo("found");
} else {
    echo("not found");
}

это даст: 0 найдены

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

echo(strpos($mystring, $find) . "<br>");
if (strpos($mystring, $find) >= 0) {
    echo("found");
} else {
    echo("not found");
}

выход: [Пусто] найдено

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

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

echo(strpos($mystring, $find) . "<br>");
if (strpos($mystring, $find) **!= false**) {
    echo("found");
} else {
    echo("not found");
}

Это работает почти во всех случаях, кроме случаев, когда я ищу подстроку в начале строки. Например, это выведет «not found»:

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

echo(strpos($mystring, $find) . "<br>");
if (strpos($mystring, $find) != false) {
    echo("found");
} else {
    echo("not found");
}

Так, как я могу заставить это работать? Я просто хочу знать, существует ли подстрока в строке, и она должна дать мне "true", если подстрока является началом или всей строкой ...

Ответы [ 2 ]

4 голосов
/ 17 июня 2009

Проверка с использованием оператора !==. Это позволит сравнивать типы и значения, а не только значения:

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

echo(strpos($mystring, $find) . "<br>");
if (strpos($mystring, $find) !== false) {
    echo("found");
} else {
    echo("not found");
}
2 голосов
/ 17 июня 2009

Я обнаружил, в чем проблема ... Мне нужно использовать! == false вместо! = ... Aaaah, php.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...