首页 > 后端开发 > php教程 > 为什么 `strpos() !== true` 无法检测 PHP 中的字符串存在?

为什么 `strpos() !== true` 无法检测 PHP 中的字符串存在?

Mary-Kate Olsen
发布: 2024-12-24 09:59:34
原创
165 人浏览过

Why Does `strpos() !== true` Fail to Detect String Presence in PHP?

理解 strpos() 中的数值比较

在 PHP 中使用 strpos() 函数执行严格相等比较时,您可能会遇到意想不到的结果。本文探讨了为什么比较 strpos() 与 true 会导致相反的预期结果。

在提供的代码中,if 语句将 strpos($link, $unacceptable) 的结果与 true 进行比较。然而,这种比较未能达到检测 $link 中是否存在不需要的字符串的预期目的。

要理解为什么会发生这种情况,我们必须参考 strpos() 文档。根据文档, strpos() 返回搜索字符串在主题字符串中第一次出现的数字位置。但是,如果未找到,则返回 false。

在代码片段中,if 语句检查 strpos() 是否返回 true。由于 strpos() 在找到匹配时返回一个数字(0 或更大),在没有匹配时返回 false,因此如果找到匹配,该语句将始终评估为 false。这是因为 true 在严格相等比较中被视为无效数字。

要解决此问题,我们需要将比较运算符更改为 !== false,它会检查 strpos() 的结果是否不是false(即,找到匹配项):

// ...
if (strpos($link, $unacceptable) !== false) {
    echo 'Unacceptable Found<br />';
} else {
    echo 'Acceptable!<br />';
}
// ...
登录后复制

通过使用此比较,代码将正确识别 $link 变量中何时存在不可接受的字符串之一,并输出适当的消息。

以上是为什么 `strpos() !== true` 无法检测 PHP 中的字符串存在?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板