strpos() ile arama
strpos() ile bir alt dizenin konumunu bulmayı ve false döndürme davranışını öğrenirsin.
strpos() ile arama
Bir dizede bir alt dizenin konumunu bulmak için strpos() kullanılır. strpos($haystack, $needle) biçiminde çağrılır; $needle'ı $haystack içinde arar ve ilk eşleşmenin konumunu döndürür. Bulamazsa false döndürür.
Örnek: strpos('merhaba', 'a') çağrısı 4 döndürür çünkü ilk 'a' harfi 4. konumdadır (m=0, e=1, r=2, h=3, a=4). Konumlar sıfırdan başlar.
false tuzağı
strpos()'ın önemli bir tuzağı vardır: eşleşme dizenin başındaysa 0 döner, eşleşme yoksa false döner. İkisi de gevşek (loose) karşılaştırmada birbirine eşittir.
Bu yüzden if (strpos($text, $word)) yazmak yanlıştır: eşleşme 0. konumda ise 0 yanlış (false) gibi algılanır ve kod beklenmedik davranır. Doğrusu katı karşılaştırma kullanmaktır: if (strpos($text, $word) === false).
Uygulama Cümlede kelime ara
$sentence değişkenine "PHP harika bir dildir" dizesini ata. $pos değişkenine strpos($sentence, 'harika') sonucunu ata. $message değişkenine başlangıçta "Yok" ata. Sonra if ($pos !== false) ile kontrol edip $message değişkenine "Bulundu" ata. En son echo $message; ile yazdır.
Örnek çözümü göster
Önce $sentence, $pos ve $message'ı ata. Sonra if ($pos !== false) { $message = 'Bulundu'; } yaz. En son echo $message; ekle.
Örnek çözüm:
<?php
$sentence = "PHP harika bir dildir";
$pos = strpos($sentence, 'harika');
$message = 'Yok';
if ($pos !== false) {
$message = 'Bulundu';
}
echo $message;
Kendini test et
-
strpos('merhaba', 'a') çıktısı nedir?
strpos('merhaba', 'a')- 4
- 1
- 0
- false
Cevabı göster
4 — Doğru. İlk 'a' harfi 4. konumdadır.
-
Katı karşılaştırma yaz
if (strpos($text, $word) ____ false) { echo 'Bulunamadı'; }Cevabı göster
if (strpos($text, $word) === false) { echo 'Bulunamadı'; } -
Çağrıyı sonucuyla eşleştir
- strpos('merhaba', 'a')
- 4
- strpos('merhaba', 'z')
- false
- strpos('merhaba', 'm')
- 0