溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

論strpos 的正確使用方式

發(fā)布時(shí)間:2020-08-10 22:35:43 來源:網(wǎng)絡(luò) 閱讀:433 作者:帥白123 欄目:開發(fā)技術(shù)

首先簡(jiǎn)單介紹下strpos函數(shù);

strpos函數(shù)是查找某個(gè)字符在字符串中的位置;這里需要明確這個(gè)函數(shù)的作用;

這個(gè)函數(shù)得到的是位置;如果存在;返回?cái)?shù)字;否則返回的是false;

而很多時(shí)候我們拿這個(gè)函數(shù)用來判斷字符串中是否存在某個(gè)字符;

一些同學(xué)使用的姿勢(shì)是這樣的;

// 判斷‘白俊遙博客’中是否存在‘博客’這個(gè)詞
if (strpos('白俊遙博客', '博客')) {
    // 如果存在執(zhí)行此處代碼
    echo '存在';
}else{
    // 如果不存在執(zhí)行此處代碼
    echo '不存在';
}

這段代碼輸出的是'存在';沒什么問題;但是再看下面這段代碼;

// 判斷‘白俊遙博客’中是否存在‘白’這個(gè)字
if (strpos('白俊遙博客', '白')) {
    // 如果存在執(zhí)行此處代碼
    echo '存在';
}else{
    // 如果不存在執(zhí)行此處代碼
    echo '不存在';
}

輸出了'不存在';原因是因?yàn)?'白' 在 '白俊遙博客' 中的第0個(gè)位置;而0在if中表示了false;

所以;如果用strpos來判斷字符串中是否存在某個(gè)字符時(shí)必須使用===false 、必須使用===false 、必須使用===false

重要的事情說三遍;正確的使用方式如下;

// 判斷‘白俊遙博客’中是否存在‘博客’這個(gè)詞
if (strpos('白俊遙博客', '博客')===false) {
    // 如果不存在執(zhí)行此處代碼
    echo '不存在';
}else{
    // 如果存在執(zhí)行此處代碼
    echo '存在';
}

你以為用上了===你就得到了strpos的整個(gè)世界?no;no;no;

這家伙還有個(gè)隱藏坑;我來換個(gè)詞;

// 判斷‘白俊遙博客1’中是否存在‘1’這個(gè)數(shù)字
if (strpos('白俊遙博客1', 1)===false) {
    // 如果不存在執(zhí)行此處代碼
    echo '不存在';
}else{
    // 如果存在執(zhí)行此處代碼
    echo '存在';
}

如果你腦算出來的上面這段代碼輸出的是‘存在’;

那你這完全沒跟上我的套路啊;不是技能的問題了;

是時(shí)候?yàn)橹巧逃憘€(gè)說法了;

事實(shí)上輸出的是'不存在';細(xì)心的童鞋會(huì)發(fā)現(xiàn)這個(gè)1 是不帶引號(hào)的;

strpos的第二個(gè)參數(shù)必須是字符串型的;

因此;如果你是在循環(huán)或者其他情況下調(diào)用的strpos函數(shù);而且不確定第二個(gè)參數(shù)的類型;

那么保險(xiǎn)的方式是用strval把它轉(zhuǎn)字符串類型了:

// 判斷‘白俊遙博客1’中是否存在‘1’這個(gè)數(shù)字
$haystack='白俊遙博客1';
$needle=1;
if (strpos($haystack, strval($needle))===false) {
    // 如果不存在執(zhí)行此處代碼
    echo '不存在';
}else{
    // 如果存在執(zhí)行此處代碼
    echo '存在';
}

論strpos 的正確使用方式



向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI