论strpos 的正确使用方式

首先简单介绍下strpos函数;函数

strpos函数是查找某个字符在字符串中的位置;这里须要明确这个函数的做用;字符串

这个函数获得的是位置;若是存在;返回数字;不然返回的是false;get

而不少时候咱们拿这个函数用来判断字符串中是否存在某个字符;博客

一些同窗使用的姿式是这样的;循环

// 判断‘白俊遥博客’中是否存在‘博客’这个词
if (strpos('白俊遥博客', '博客')) {
    // 若是存在执行此处代码
    echo '存在';
}else{
    // 若是不存在执行此处代码
    echo '不存在';
}

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

// 判断‘白俊遥博客’中是否存在‘白’这个字
if (strpos('白俊遥博客', '白')) {
    // 若是存在执行此处代码
    echo '存在';
}else{
    // 若是不存在执行此处代码
    echo '不存在';
}

输出了'不存在';缘由是由于 '白' 在 '白俊遥博客' 中的第0个位置;而0在if中表示了false;img

因此;若是用strpos来判断字符串中是否存在某个字符时必须使用===false 、必须使用===false必须使用===falseco

重要的事情说三遍;正确的使用方式以下;字符

// 判断‘白俊遥博客’中是否存在‘博客’这个词
if (strpos('白俊遥博客', '博客')===false) {
    // 若是不存在执行此处代码
    echo '不存在';
}else{
    // 若是存在执行此处代码
    echo '存在';
}

你觉得用上了===你就获得了strpos的整个世界?no;no;no;数字

这家伙还有个隐藏坑;我来换个词;

// 判断‘白俊遥博客1’中是否存在‘1’这个数字
if (strpos('白俊遥博客1', 1)===false) {
    // 若是不存在执行此处代码
    echo '不存在';
}else{
    // 若是存在执行此处代码
    echo '存在';
}

若是你脑算出来的上面这段代码输出的是‘存在’;

那你这彻底没跟上个人套路啊;不是技能的问题了;

是时候为智商讨个说法了;

事实上输出的是'不存在';细心的童鞋会发现这个1 是不带引号的;

strpos的第二个参数必须是字符串型的;

所以;若是你是在循环或者其余状况下调用的strpos函数;并且不肯定第二个参数的类型;

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

// 判断‘白俊遥博客1’中是否存在‘1’这个数字
$haystack='白俊遥博客1';
$needle=1;
if (strpos($haystack, strval($needle))===false) {
    // 若是不存在执行此处代码
    echo '不存在';
}else{
    // 若是存在执行此处代码
    echo '存在';
}

白俊遥博客

 

本文为白俊遥原创文章,转载无需和我联系,但请注明来自白俊遥博客http://www.baijunyao.com

相关文章
相关标签/搜索