理解 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中文网其他相关文章!