如何检查字符串是否包含子字符串并打印它

我需要使用PHP打印出包含给定子字符串“ Happy”的所有字符串。


$t包含所有输入数据。我尝试这样做,但是无法达到预期的输出。


$i = 1;

while ($t = dbNext($r)) {

        $temp = strtolower($t[0]);

        if(strpos($temp, 'happy')){

                echo "$i - $t[0]";

                echo "\n";

                $i++;

        }

}

输入:


1. Happy Gilmore

2. The Fast and the Furious

3. Happy, Texas

4. The Karate Kid

5. The Pursuit of Happyness

6. Avengers: End Game

7. Happy Feet

8. Another Happy Day

预期产量:


1. Happy Gilmore

2. Happy, Texas

3. The Pursuit of Happyness

4. Happy Feet

5. Another Happy Day

我得到的输出:


1. The Pursuit of Happyness

2. Another Happy Day


POPMUISE
浏览 190回答 3
3回答

三国纷争

strpos返回false如果它不匹配,但它也返回0第一个字符,如果字符串匹配。因此,您需要对的结果进行严格检查,strpos以查看是否匹配,因为在布尔上下文0中与相同false:if (strpos($temp, 'happy') !== false) {请注意,您实际上可以使用stripos,这是不区分大小写的,然后不需要调用strtolower。

哔哔one

在PHP中,strpos在匹配时返回子字符串的起始索引,否则返回False。因此,当“ Happy”从索引0开始时,strpos返回0,从而使if校验为false。做这样的事情:$i = 1;while ($t = dbNext($r)) {        $temp = strtolower($t[0]);        $res = strpos($temp, 'happy');        if(gettype($res) == "integer" && $res >= 0){                echo "$i - $t[0]";                echo "\n";                $i++;        }}
打开App,查看更多内容
随时随地看视频慕课网APP