首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP strpos() 尋找字串位置:型別陷阱與正確判斷

     編輯:PHP 綜合知識

strpos() 回傳 整數位置 或 false,屬於混合回傳型別。若直接用 == 或 if ($pos) 判斷,位置 0 會被誤判為「未找到」。

錯誤示範

$haystack = "needle23423432";
$pos = strpos($haystack, "needle"); // 回傳 0
if ($pos == false) { // 錯誤!0 == false 為 true
    echo "未找到";
} else {
    echo "找到"; // 實際進這裡,但邏輯已錯
}

正確寫法:嚴格比較 ===

$pos = strpos($haystack, "needle");
if ($pos === false) {
    echo "未找到 (===) 正確";
} else {
    echo "找到於位置 $pos (===) 正確";
}

輸出對照

Not found based (==) test   // 錯誤判斷
Found based (===) test      // 正確判斷

最佳實踐模式

// 封裝成函數避免重複錯誤
function contains(string $haystack, string $needle): bool {
    return strpos($haystack, $needle) !== false;
}

// 使用
if (contains($str, "keyword")) { ... }

補充:mb_strpos() 處理多位元組字串

中文等多位元組編碼請用 mb_strpos($haystack, $needle, 0, 'UTF-8'),避免位置計算錯誤。

牢記 === false,是 PHP 開發者必修的基本功。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved