您好,登錄后才能下訂單哦!
首先簡(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 '存在'; }
本文為白俊遙原創(chuàng)文章,轉(zhuǎn)載無需和我聯(lián)系,但請(qǐng)注明來自白俊遙博客http://www.baijunyao.com
免責(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)容。