关于PHP中的strpos的问题

时间:2009-06-17 03:02:42

标签: php

我只想弄明白......

$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”而不是“&gt; = 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 个答案:

答案 0 :(得分:4)

使用!==运算符进行测试。这将比较类型和值,而不仅仅是值:

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

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

答案 1 :(得分:2)

我发现问题是什么......我需要使用!== false而不是!= ... Aaaah,php。