PHP
preg_match() ile eşleştirme
preg_match() ile bir dizede desen eşleştirmeyi öğrenirsin.
Düzenli ifadeler (regex) nedir?
Düzenli ifadeler (regex), bir metnin içinde desen aramak için kullanılan küçük ama güçlü bir dildir. PHP'de regex desenleri iki ayraç (delimiter) arasına yazılır; en yaygın ayraç eğik çizgidir: /elma/.
Bir deseni metne uydurmak için preg_match($pattern, $subject, $matches) kullanılır. Eşleşme bulunursa 1, bulunamazsa 0 döner; eşleşen parça $matches dizisine yazılır.
Desen içinde harfler ve rakamlar kendini eşler; özel karakterler ise anlam taşır.
preg_match'in parametreleri ve $matches
preg_match üç temel parametre alır: desen, aranacak metin ve eşleşmelerin yazılacağı dizi. Üçüncü parametre olan $matches isteğe bağlıdır ama çoğu zaman kullanılır.
Eşleşme varsa $matches[0] tüm eşleşen parçayı tutar. Desende parantezle yakalama grubu kullanırsan, $matches[1], $matches[2] sırayla grupları tutar.
Eşleşme yoksa dizi boş kalır. Dönen değer sayısal olduğu için if (preg_match(...)) kalıbı yaygındır.
Uygulama İlk rakamı bul
$phone = "Tel: 0555 123 45 67"; dizesinde preg_match ile ilk rakamı bul. Deseni $pattern değişkenine, sonucu $matches'a al ve $matches[0]'ı yeni satırla yazdır.
Örnek çözümü göster
Deseni "/\d/" yap. preg_match($pattern, $phone, $matches) çağır. echo $matches[0] . "\n"; ile yazdır.
Örnek çözüm:
<?php
// preg_match ile ilk rakamı bul
$phone = "Tel: 0555 123 45 67";
// deseni ve matches değişkenini ayarla
$pattern = "/\d/";
preg_match($pattern, $phone, $matches);
// ilk eşleşmeyi yazdır
echo $matches[0] . "\n";
Kendini test et
-
preg_match hangi değeri döndürür?
- Eşleşen metnin kendisini döndürür
- Eşleşme varsa 1, yoksa 0 döndürür
- Her zaman true döndürür
- İlk eşleşmenin indeksini döndürür
Cevabı göster
Eşleşme varsa 1, yoksa 0 döndürür — Doğru. preg_match eşleşme bulursa 1, bulamazsa 0, hata olursa false döner.
-
Desene ayraç ekle
$pattern = "____";
echo preg_match($pattern, "elma tatlısı") . "\n";
Cevabı göster
$pattern = "/elma/";
echo preg_match($pattern, "elma tatlısı") . "\n";
-
Regex parçalarını anlama
- /.../
- Düzenli ifade ayraçları
- $matches
- Eşleşmeleri tutan dizi
- preg_match
- İlk eşleşmeyi arayan fonksiyon
- 1 veya 0
- preg_match dönüş değeri
Sıradaki ders: preg_replace() ile değiştirme