CodeBlanks Logo Icon CodeBlanks

strpos() ile arama

PHP kursu · Başlangıç · Ders 90/116

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

  1. 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.

  2. Katı karşılaştırma yaz

    if (strpos($text, $word) ____ false) {
        echo 'Bulunamadı';
    }
    Cevabı göster
    if (strpos($text, $word) === false) {
        echo 'Bulunamadı';
    }
  3. Çağrıyı sonucuyla eşleştir

    strpos('merhaba', 'a')
    4
    strpos('merhaba', 'z')
    false
    strpos('merhaba', 'm')
    0

Başlangıç bölümündeki tüm dersler