关于strpos 函数,你应该注意什么?

  1. 首先让我们介绍一下这个函数:

    mixed strpos(string haystack,mixed needle [,int $offset = 0])

    查找 haystack needle ,(字符串位置从0开始)如果包含,则返回$needle 第一次出现的位置,否则返回false

    其中$needle 如果不是string, 则会被转换成整数并视为字符的顺序值。

    offset haystack 这个字符串的哪个位置开始进行 $needle的查找的,默认是从第0个位置开始。

    7.1.0 开始支持负数的 offset!

  2. 紧接着,我们来看两段代码

// 代码1
$haystack1 = 'qinjianbo';
$needle1 = 'qin';
if (strpos($haystack1, $needle1)) {
    echo sprintf('$s 包含 $s', $haystack1, $needle1);
} else {
    echo sprintf('$s 不包含 %s', $haystack1, $needle1);
}

// 代码2
$haystack2 = 'qinjianbo';
$needle2 = 'qin';
if (strpos($haystack2, $needle2) !== false) {
    echo sprintf('$s 包含 $s', $haystack1, $needle1);
} else {
    echo sprintf('$s 不包含 %s', $haystack1, $needle1);
}

OK , 看到这两段代码,相信聪明的你已经注意到了 !== false ,对的,正如你运行这两段代码后看到的一样,代码1将输出 “qinjianbo 不包含 qin”, 而代码2 才会输出 “qinjianbo 包含 qin”。

为什么会这样呢?仔细再看看strpos 的加粗部分的介绍吧!~对,字符串位置从0开始,而且包含会返回第一次出现的位置。这里放返回的就是0了, 而if(0) 依然为false, 所以代码1 会输出”qinjianbo 不包含 qin”, 而代码2 的判断中加入了 !== false,进行了严格比较 if(0 !== false) 成立,所以输出”qinjianbo 包含 qin”。

怎么样,找到需要注意的地方了吧!~以后使用strpos 可一定要加 !== false 来进行判断哦!~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值