Fonksiyon preg_match_all
preg_match_all fonksiyonu bir dizede global desen araması yapar. İlk parametreye düzenli ifade, ikinci parametreye arama yapılacak dize, üçüncü parametreye sonuçların kaydedileceği dizi iletilir. Dördüncü isteğe bağlı parametre döndürülecek yapının türünü belirler, beşinci isteğe bağlı parametre ise aramanın başlangıç ofsetidir.
Sözdizimi
preg_match_all(pattern, subject, matches, [flags], [offset]);
Bayraklar
Dördüncü parametrenin hangi değerleri alabileceğine bir göz atalım:
| Parametre | Açıklama |
|---|---|
PREG_PATTERN_ORDER |
Varsayılan mod. Sonuçlar gruplara göre düzenlenir - dizinin sıfırıncı elemanı sıfırıncı grupları içerir, dizinin birinci elemanı birinci grupları içerir ve bu şekilde devam eder. |
PREG_SET_ORDER |
Sonuçlar eşleşmelere göre gruplanır - dizinin her elemanı bulunan grupları içeren bir dizi içerir. |
PREG_OFFSET_CAPTURE |
Her eşleşme için dizideki konum döndürülür. Her sonuç, sıfırıncı elemanın eşleşmeyi, birincinin ise ofsetini içerdiği bir dizidir. |
PREG_UNMATCHED_AS_NULL |
Eşleşmeyen gruplar boş dizeler yerine
null olarak döndürülür.
|
Örnek
Bir dizedeki tüm rakamları bulalım:
<?php
$str = 'abc 123 def 456';
preg_match_all('/\d+/', $str, $res);
var_dump($res[0]);
?>
Kodun çalıştırılma sonucu:
['123', '456']
Örnek
Bir dizedeki tüm 'a' harflerini bulalım:
<?php
$str = 'banana';
preg_match_all('/a/', $str, $res);
var_dump($res[0]);
?>
Kodun çalıştırılma sonucu:
['a', 'a', 'a']
Örnek
Bir dizeden tüm zaman damgalarını ve bileşenlerini çıkaralım:
<?php
$time = '12:01:02 13:03:04 14:05:06';
preg_match_all('#(\d\d):(\d\d):(\d\d)#', $time, $res);
var_dump($res);
?>
Kodun çalıştırılma sonucu:
[
0 => ['12:01:02', '13:03:04', '14:05:06'],
1 => ['12', '13', '14'],
2 => ['01', '03', '05'],
3 => ['02', '04', '06']
]
Örnek
Şimdi de eşleşmelere göre gruplama için
PREG_SET_ORDER bayrağını kullanalım:
<?php
$time = '12:01:02 13:03:04 14:05:06';
preg_match_all('#(\d\d):(\d\d):(\d\d)#', $time, $res, PREG_SET_ORDER);
var_dump($res);
?>
Kodun çalıştırılma sonucu:
[
0 => '12:01:02',
1 => '12',
2 => '01',
3 => '02'
],
[
0 => '13:03:04',
1 => '13',
2 => '03',
3 => '04'
],
[
0 => '14:05:06',
1 => '14',
2 => '05',
3 => '06'
]
Ayrıca bakınız
-
ilk eşleşmeyi bulan
preg_match
fonksiyonu -
düzenli ifade ile arama ve değiştirme yapan
preg_replace
fonksiyonu