Rumah >pembangunan bahagian belakang >tutorial php >Mengapakah `strpos() !== true` Gagal Mengesan Kehadiran Rentetan dalam PHP?

Mengapakah `strpos() !== true` Gagal Mengesan Kehadiran Rentetan dalam PHP?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-24 09:59:34220semak imbas

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

Memahami Perbandingan Berangka dalam strpos()

Apabila melakukan perbandingan kesamaan yang ketat menggunakan fungsi strpos() dalam PHP, anda mungkin menghadapi hasil yang tidak dijangka . Artikel ini mengkaji sebab membandingkan strpos() dengan benar boleh membawa kepada hasil yang dimaksudkan sebaliknya.

Dalam kod yang disediakan, pernyataan if membandingkan hasil strpos($link, $unacceptable) dengan true. Walau bagaimanapun, perbandingan ini gagal mencapai tujuan yang dimaksudkan untuk mengesan kehadiran rentetan yang tidak diingini dalam $link.

Untuk memahami sebab ini berlaku, kita mesti merujuk kepada dokumentasi strpos(). Menurut dokumentasi, strpos() mengembalikan kedudukan berangka kejadian pertama rentetan yang dicari dalam rentetan subjek. Walau bagaimanapun, jika tiada kejadian ditemui, ia mengembalikan palsu.

Dalam coretan kod, pernyataan if menyemak jika strpos() mengembalikan benar. Memandangkan strpos() mengembalikan nombor (0 atau lebih besar) apabila padanan ditemui dan palsu apabila tiada padanan, pernyataan akan sentiasa menilai palsu jika padanan ditemui. Ini kerana true dianggap sebagai nombor tidak sah dalam perbandingan kesaksamaan yang ketat.

Untuk menyelesaikan isu ini, kita perlu menukar operator perbandingan kepada !== false, yang menyemak sama ada keputusan strpos() tidak false (iaitu, ia menemui padanan):

// ...
if (strpos($link, $unacceptable) !== false) {
    echo 'Unacceptable Found<br />';
} else {
    echo 'Acceptable!<br />';
}
// ...

Dengan menggunakan perbandingan ini, kod akan mengenal pasti dengan betul apabila salah satu rentetan yang tidak boleh diterima terdapat dalam $pautan pembolehubah dan keluarkan mesej yang sesuai.

Atas ialah kandungan terperinci Mengapakah `strpos() !== true` Gagal Mengesan Kehadiran Rentetan dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn