Menu

PHP str_contains(): Cek Apakah String Mengandung Teks

str_contains($haystack, $needle) mengembalikan true kalau $needle muncul di bagian mana pun dari $haystack. Pelajari versi yang tidak peka huruf besar kecil, str_starts_with dan str_ends_with, cara memeriksa beberapa kata, dan versi strpos untuk PHP 7.

Halaman ini dilengkapi editor yang bisa dijalankan. Edit, jalankan, dan lihat output-nya seketika.

str_contains($haystack, $needle) mengembalikan true kalau $needle muncul di bagian mana pun dari $haystack, dan false kalau tidak. Fungsi ini ditambahkan di PHP 8.0 dan peka huruf besar kecil.

Berbeda dengan strpos(), fungsi ini mengembalikan boolean sungguhan, jadi tidak ada jebakan "ditemukan di posisi 0 terlihat seperti false".

Sintaks

str_contains(string $haystack, string $needle): bool
str_starts_with(string $haystack, string $needle): bool
str_ends_with(string $haystack, string $needle): bool

Ketiganya ditambahkan di PHP 8.0 dan bekerja byte demi byte, jadi semuanya menangani teks Jepang dan teks UTF-8 lain dengan benar tanpa perlu versi mb_.

Memeriksa awal atau akhir string dengan str_starts_with dan str_ends_with

Contains yang tidak peka huruf besar kecil

Tidak ada fungsi str_icontains(). Ubah dulu kedua string menjadi huruf kecil. mb_strtolower() juga mengubah huruf di luar ASCII, seperti É atau huruf Sirilik, yang tidak disentuh oleh strtolower().

Needle kosong mengembalikan true

Needle kosong ditemukan di setiap string, termasuk string kosong. Ini penting kalau needle berasal dari kotak pencarian yang dibiarkan kosong oleh pengguna.

Memeriksa apakah string mengandung salah satu atau semua dari beberapa kata

str_contains() hanya menerima satu needle. Telusuri array berisi needle-needle: kembalikan hasil begitu ada satu yang cocok untuk "salah satu", atau begitu ada satu yang gagal untuk "semua".

Untuk memeriksa apakah sebuah nilai adalah salah satu elemen array, dan bukan substring dari sebuah string, pakai in_array().

Sebelum PHP 8: strpos !== false

Kode yang harus berjalan di PHP 7 memakai strpos() dengan perbandingan ketat. Hasilnya sama dengan str_contains(), kecuali untuk needle kosong: strpos() di PHP 7 mencetak Warning: strpos(): Empty needle dan mengembalikan false.

Baris terakhir mencetak bool(false) padahal teksnya ada, karena php berada di posisi 0. Mengganti pemeriksaan seperti ini dengan str_contains() adalah salah satu upgrade PHP 8 yang paling mudah.

Pertanyaan yang sering diajukan

Bagaimana cara memeriksa apakah sebuah string mengandung kata tertentu di PHP?

Di PHP 8, pakai str_contains($haystack, $needle), yang mengembalikan true atau false: str_contains('Hello world', 'world') bernilai true. Di PHP 7, pakai strpos($haystack, $needle) !== false.

Apakah str_contains peka huruf besar dan kecil?

Ya. Untuk pemeriksaan yang tidak peka huruf besar kecil, ubah kedua sisi menjadi huruf kecil: str_contains(mb_strtolower($haystack), mb_strtolower($needle)), atau pakai stripos($haystack, $needle) !== false.

Kenapa str_contains mengembalikan true untuk string kosong?

Setiap string mengandung string kosong, jadi str_contains('abc', '') mengembalikan true. Kalau needle berasal dari input pengguna, periksa dulu bahwa nilainya tidak kosong.

Bagaimana cara memeriksa apakah string diawali atau diakhiri dengan sesuatu di PHP?

Pakai str_starts_with($s, 'http') dan str_ends_with($s, '.pdf'), yang keduanya ditambahkan di PHP 8.0. Seperti str_contains(), keduanya peka huruf besar kecil dan mengembalikan bool.

Ilustrasi bahasa pemrograman di Coddy

Belajar coding dengan Coddy

Mulai