在PHP 中, stripos()函數用於查找字符串在另一個字符串中首次出現的位置(不區分大小寫)。這個函數經常在處理字符串相關邏輯時使用,比如判斷某個關鍵詞是否存在於給定內容中。
然而,由於stripos()的返回值特性,很多開發者在判斷時容易踩坑,尤其是對返回值為0的處理。本文將詳細解析這一問題,並給出正確的判斷方式。
$haystack = "Welcome to m66.net!";
$needle = "welcome";
$pos = stripos($haystack, $needle);
在上面的例子中, stripos()將返回0 ,因為"welcome" 在目標字符串開頭就出現了(雖然大小寫不同,但stripos()不區分大小寫)。
很多初學者會這樣寫:
if (stripos($haystack, $needle)) {
echo "找到了關鍵詞";
} else {
echo "關鍵詞不存在";
}
這段代碼的問題在於:如果關鍵詞出現在字符串的開頭(位置為0), if判斷會把0當成false ,從而錯誤地執行了else分支。
$pos = stripos($haystack, $needle);
if ($pos !== false) {
echo "找到了關鍵詞,位置在:$pos";
} else {
echo "關鍵詞不存在";
}
使用全等於( !== false )的寫法,能準確地區分函數返回的是0還是false ,從而避免邏輯錯誤。
例如,我們要檢測用戶提交的評論中是否包含某些敏感詞,並給予提醒: