PHP
preg_match_all() ile tüm eşleşmeler
preg_match_all() ile bir dizedeki tüm eşleşmeleri almayı öğrenirsin.
preg_match_all ile tüm eşleşmeler
preg_match yalnız ilk eşleşmeyi bulur. Tüm eşleşmeleri istiyorsan preg_match_all($pattern, $subject, $matches) kullanılır.
Dönüş değeri eşleşme sayısıdır (0, 1, 2, ...). Eşleşmeler $matches dizisinde, varsayılan olarak PREG_PATTERN_ORDER düzeninde saklanır: $matches[0] tüm eşleşmeleri içeren bir dizidir.
Yani her etiketi veya her sayıyı tek tek almak için foreach ($matches[0] as $m) kalıbı yaygındır.
PREG_PATTERN_ORDER ve PREG_SET_ORDER
preg_match_all'ın dördüncü parametresi, eşleşmelerin nasıl dizileceğini belirler. İki yaygın seçenek vardır:
PREG_PATTERN_ORDER (varsayılan): $matches[0] tüm eşleşmelerin listesi, $matches[1] ilk grubun tüm eşleşmeleri. Grupları sütun sütun dizer.
PREG_SET_ORDER: $matches[0] ilk eşleşmenin tüm grupları, $matches[1] ikinci eşleşmenin tüm grupları. Her eşleşmeyi kendi başına bir dizi olarak dizer.
Uygulama Tüm etiketleri bul
$post = "Bugün #php ve #regex çalışıyoruz"; dizesindeki tüm #etiket'leri preg_match_all ile bul. Deseni $pattern'e al, çağrıyı $matches'la yap ve foreach ile her etiketi yeni satırda yazdır.
Örnek çözümü göster
Deseni "/#\w+/" yap. preg_match_all($pattern, $post, $matches) çağır. foreach ($matches[0] as $tag) { echo $tag . "\n"; } ile yazdır.
Örnek çözüm:
<?php
// preg_match_all ile tüm etiketleri (#...) bul
$post = "Bugün #php ve #regex çalışıyoruz";
// deseni, matches ve çağrıyı ekle
$pattern = "/#\w+/";
preg_match_all($pattern, $post, $matches);
// her etiketi yeni satırda yazdır
foreach ($matches[0] as $tag) {
echo $tag . "\n";
}
Kendini test et
-
preg_match_all hangi değeri döndürür?
- Eşleşen toplam sayı
- İlk eşleşen metin
- true veya false
- Eşleşmelerin dizi hali
Cevabı göster
Eşleşen toplam sayı — Doğru. Dönüş değeri eşleşme sayısıdır; eşleşmelerin kendisi $matches'tedir.
-
Eşleşmeler üzerinde döngü
foreach (____ as $tag) {
echo $tag . "\n";
}
Cevabı göster
foreach ($matches[0] as $tag) {
echo $tag . "\n";
}
-
Sabitler ve anlamları
- PREG_PATTERN_ORDER
- Grupları sütun olarak dizer
- PREG_SET_ORDER
- Eşleşmeleri satır olarak dizer
- $matches[0]
- Tüm eşleşmelerin listesi
- preg_match_all
- Tüm eşleşmeleri bulan fonksiyon
Sıradaki ders: Karakter sınıfları