PHP - strpos没有检查第一个单词

aqu*_*ent 6 php

我正在尝试在PHP中进行一些验证,其中一个是检查输入的字符串中是否有特定的单词.问题是,当我把指定的单词放在第一位时,我的代码似乎无法正常工作.

这是代码:

$word = "aa bb cc dd";
if(strpos($word, 'aa') == false)
{
    echo "wrong input";
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我将其更改$wordbb aa cc dd或者bb cc dd aa,它都有效.我想知道如何解决这个问题.

and*_*wsi 13

strpos如果你的字符串不存在,将返回false.否则,它返回字符串的位置.

在这种情况下,'aa'位于字符串的开头,这意味着它位于0位置; 0的计算结果为false.

您需要对结果进行布尔比较:

if(strpos($word, 'aa') === false)
Run Code Online (Sandbox Code Playgroud)


jer*_*ris 6

那是因为strpos返回单词的位置,在这种情况下为0. 0是假的.==没有检查相同的匹配,===是吗.所以使用三等于.

甚至在文档也是如此.


Chr*_*ski 5

strpos返回0,因为'aa'是第0个字符.因为0 == false但不是===假(它不是布尔值),你需要使用===而不是==.