首頁 >後端開發 >php教程 >為什麼 `strpos() !== true` 無法偵測 PHP 中的字串存在?

為什麼 `strpos() !== true` 無法偵測 PHP 中的字串存在?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-24 09:59:34220瀏覽

Why Does `strpos() !== true` Fail to Detect String Presence in PHP?

理解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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn