str_contains($haystack, $needle) $needle değeri $haystack içinde herhangi bir yerde geçiyorsa true, aksi halde false döndürür. PHP 8.0'da eklendi ve büyük küçük harfe duyarlıdır.
strpos() fonksiyonundan farklı olarak gerçek bir boolean döndürür, bu yüzden "0 konumunda bulundu, false gibi görünüyor" tuzağı yoktur.
Söz dizimi
str_contains(string $haystack, string $needle): bool
str_starts_with(string $haystack, string $needle): bool
str_ends_with(string $haystack, string $needle): bool
Üçü de PHP 8.0'da eklendi ve bayt bayt çalışır, bu yüzden Japonca ve diğer UTF-8 metinleri bir mb_ sürümüne gerek kalmadan doğru işler.
str_starts_with ve str_ends_with ile başı veya sonu kontrol etme
Büyük küçük harfe duyarsız içerme
str_icontains() diye bir fonksiyon yoktur. Önce iki dizgeyi de küçük harfe çevirin. mb_strtolower(), strtolower() fonksiyonunun dokunmadığı É veya Kiril harfleri gibi ASCII dışındaki harfleri de küçük harfe çevirir.
Boş aranan değer true döndürür
Boş bir aranan değer, boş olan dahil her dizgede bulunur. Bu, aranan değer kullanıcının boş bıraktığı bir arama kutusundan geldiğinde önemlidir.
Bir dizgenin birkaç kelimeden herhangi birini veya hepsini içerip içermediğini kontrol etme
str_contains() tek bir aranan değer alır. Bir aranan değerler dizisi üzerinde dolaşın: "herhangi biri" için biri eşleşir eşleşmez, "hepsi" için biri başarısız olur olmaz dönün.
Bir değerin bir dizgenin alt dizgesi değil de bir dizinin elemanlarından biri olup olmadığını kontrol etmek için in_array() kullanın.
PHP 8 öncesi: strpos !== false
PHP 7'de çalışması gereken kodlar katı bir karşılaştırmayla strpos() kullanır. Boş bir aranan değer dışında str_contains() ile aynı yanıtı verir: PHP 7'nin strpos() fonksiyonu Warning: strpos(): Empty needle yazdırır ve false döndürürdü.
Son satır, metin orada olduğu halde bool(false) yazdırır, çünkü php 0 konumundadır. Bu tür kontrolleri str_contains() ile değiştirmek en kolay PHP 8 yükseltmelerinden biridir.
Sıkça Sorulan Sorular
PHP'de bir dizgenin bir kelime içerip içermediğini nasıl kontrol ederim?
PHP 8'de true veya false döndüren str_contains($haystack, $needle) kullanın: str_contains('Hello world', 'world') true olur. PHP 7'de strpos($haystack, $needle) !== false kullanın.
str_contains büyük küçük harfe duyarlı mı?
Evet. Büyük küçük harfe duyarsız bir kontrol için iki tarafı da küçük harfe çevirin: str_contains(mb_strtolower($haystack), mb_strtolower($needle)), ya da stripos($haystack, $needle) !== false kullanın.
str_contains boş bir dizge için neden true döndürüyor?
Her dizge boş dizgeyi içerir, bu yüzden str_contains('abc', '') true döndürür. Aranan değer kullanıcı girdisinden geliyorsa önce boş olmadığını kontrol edin.
PHP'de bir dizgenin bir şeyle başlayıp başlamadığını veya bitip bitmediğini nasıl kontrol ederim?
İkisi de PHP 8.0'da eklenen str_starts_with($s, 'http') ve str_ends_with($s, '.pdf') kullanın. str_contains() gibi büyük küçük harfe duyarlıdırlar ve bir bool döndürürler.