微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

关于PHP中的strpos的问题

我只想弄明白……

$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”…

解决方法:

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐