我只是想弄清楚...

$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");
}


这几乎在所有情况下都有效,除非我在字符串的开头查找子字符串。例如,这将输出“未找到”:

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

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


那么我该如何做呢?我只想知道字符串中是否存在子字符串,如果子字符串是开头或整个字符串,它应该给我“ true”。

最佳答案

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

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

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

关于php - 关于PHP中的strpos的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1004897/

10-12 03:34