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

PHP stripos() 函數大小寫不敏感查找與 === 嚴格比較陷阱

     編輯:PHP 綜合知識

函數簽名

stripos(string $haystack, string $needle, int $offset = 0): int|false
  • 大小寫不敏感查找 $needle 在 $haystack 首次出現位置(0 起索引)。
  • 未找到回傳 false。
  • 區分大小寫版本請用 strpos()。

經典陷阱:0 == false

$str = 'abc';
$pos = stripos($str, 'a'); // 回傳 0

if ($pos == false) {   // 危險!0 == true,進入分支
    echo "未找到";
}
if ($pos === false) {  // 正確:嚴格比較類型與值
    echo "未找到";
}

最佳實踐

// 寫法 1:嚴格比較
if (stripos($str, 'keyword') === false) { ... }

// 寫法 2:隱式轉換(不推薦,語義不明)
if (stripos($str, 'keyword') !== false) { ... }

// 寫法 3:PHP 8.0+ str_contains() 更直觀
if (!str_contains($str, 'keyword')) { ... } // 區分大小寫
if (!str_contains(strtolower($str), 'keyword')) { ... } // 不區分大小寫

offset 參數應用

$str = 'abcabc';
echo stripos($str, 'a', 2); // 從索引 2 開始找,輸出 3

效能提示

  • 頻繁查找固定字串集合,考慮 preg_match() 或建立 Trie 樹。
  • 超長字串(>1MB)建議分塊處理或使用流式搜尋。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved