理解strpos() 中的數值比較
在PHP 中使用strpos() 函數執行嚴格相等到意想不到的結果。本文探討了為什麼比較 strpos() 與 true 會導致相反的預期結果。
在提供的程式碼中,if 語句將 strpos($link, $unacceptable) 的結果與 true 比較。然而,這種比較未能達到檢測 $link 中是否存在不需要的字串的預期目的。
要理解為什麼會發生這種情況,我們必須參考 strpos() 文件。根據文檔, strpos() 傳回搜尋字串在主題字串中第一次出現的數字位置。但是,如果未找到,則傳回 false。
在程式碼片段中,if 語句檢查 strpos() 是否回傳 true。由於 strpos() 在找到匹配時傳回一個數字(0 或更大),在沒有匹配時傳回 false,因此如果找到匹配,則該語句將始終評估為 false。這是因為 true 在嚴格相等比較中被視為無效數字。
要解決此問題,我們需要將比較運算子更改為!== false,它會檢查strpos() 的結果是否不是false(即,找到匹配項):
// ... if (strpos($link, $unacceptable) !== false) { echo 'Unacceptable Found<br />'; } else { echo 'Acceptable!<br />'; } // ...
透過使用此比較,程式碼將正確識別$link 變數中何時存在不可接受的字串之一,並輸出適當的訊息。
以上是為什麼 `strpos() !== true` 無法偵測 PHP 中的字串存在?的詳細內容。更多資訊請關注PHP中文網其他相關文章!