为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
POPMUISE 2021-04-09 11:15:14
我需要使用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 Gilmore2. The Fast and the Furious3. Happy, Texas4. The Karate Kid5. The Pursuit of Happyness6. Avengers: End Game7. Happy Feet8. Another Happy Day预期产量:1. Happy Gilmore2. Happy, Texas3. The Pursuit of Happyness4. Happy Feet5. Another Happy Day我得到的输出:1. The Pursuit of Happyness2. Another Happy Day
查看完整描述

3 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

strpos返回false如果它不匹配,但它也返回0第一个字符,如果字符串匹配。因此,您需要对的结果进行严格检查,strpos以查看是否匹配,因为在布尔上下文0中与相同false

if (strpos($temp, 'happy') !== false) {

请注意,您实际上可以使用stripos,这是不区分大小写的,然后不需要调用strtolower


查看完整回答
反对 回复 2021-04-23
?
哔哔one

TA贡献1854条经验 获得超8个赞

在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++;

        }

}


查看完整回答
反对 回复 2021-04-23
  • 3 回答
  • 0 关注
  • 189 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信