論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

相關文章
相關標籤/搜索