前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在PHP中strpos函数的正确使用方式

在PHP中strpos函数的正确使用方式

作者头像
沈唁
发布2018-05-24 15:38:33
5.1K0
发布2018-05-24 15:38:33
举报
文章被收录于专栏:沈唁志沈唁志

首先简单介绍下 strpos 函数,strpos 函数是查找某个字符在字符串中的位置,这里需要明确这个函数的作用,这个函数得到的是位置。

如果存在,返回数字,否则返回的是 false。

而很多时候我们拿这个函数用来判断字符串中是否存在某个字符,一些同学使用的姿势是这样的

代码语言:javascript
复制
// 判断‘沈唁志博客’中是否存在‘博客’这个词
if (strpos('沈唁志博客', '博客')) {
    // 如果存在执行此处代码
    echo '存在';
}else{
    // 如果不存在执行此处代码
    echo '不存在';
}

这段代码输出的是’存在’;没什么问题;但是再看下面这段代码

代码语言:javascript
复制
// 判断‘沈唁志博客’中是否存在‘沈’这个字
if (strpos('沈唁志博客', '沈')) {
    // 如果存在执行此处代码
    echo '存在';
}else{
    // 如果不存在执行此处代码
    echo '不存在';
}

输出了’不存在’;原因是因为 ‘沈’ 在‘沈唁志博客’中的第 0 个位置;而 0 在 if 中表示了 false,所以,如果用 strpos 来判断字符串中是否存在某个字符时

必须使用===false

必须使用===false

必须使用===false

重要的事情说三遍,正确的使用方式如下

代码语言:javascript
复制
// 判断‘沈唁志博客’中是否存在‘博客’这个词
if (strpos('沈唁志博客', '博客')===false) {
    // 如果不存在执行此处代码
    echo '不存在';
}else{
    // 如果存在执行此处代码
    echo '存在';
}

你以为用上了===你就得到了 strpos 的整个世界?no,no,no,这家伙还有个隐藏坑,我来换个词

代码语言:javascript
复制
// 判断‘沈唁志博客 1’中是否存在‘1’这个数字
if (strpos('沈唁志博客1', 1)===false) {
    // 如果不存在执行此处代码
    echo '不存在';
}else{
    // 如果存在执行此处代码
    echo '存在';
}

如果你脑算出来的上面这段代码输出的是‘存在’,那你这完全没跟上我的套路啊,不是技能的问题了,是时候为智商讨个说法了,事实上输出的是’不存在’,细心的童鞋会发现这个 1 是不带引号的,strpos 的第二个参数必须是字符串型的,因此,如果你是在循环或者其他情况下调用的 strpos 函数,而且不确定第二个参数的类型

那么保险的方式是用strval把它转字符串类型了:

代码语言:javascript
复制
// 判断‘沈唁志博客 1’中是否存在‘1’这个数字
$haystack='沈唁志博客1';
$needle=1;
if (strpos($haystack, strval($needle))===false) {
    // 如果不存在执行此处代码
    echo '不存在';
}else{
    // 如果存在执行此处代码
    echo '存在';
}

沈唁志|一个PHPer的成长之路! 原创文章采用CC BY-NC-SA 4.0协议进行许可,转载请注明:转载自:在PHP中strpos函数的正确使用方式

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-10-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档