Düzenli İfadelerle PHP'de Arama Yaparken Yakalama Grupları
Diyelim ki bir etki alanı içeren bir dizgimiz var:
<?php
$str = 'eee site.ru bbb';
?>
Bu etki alanını bulup onu parçalara ayıralım: etki alanı adını bölgesinden ayıralım. Bunun için düzenli ifadelerin özel yakalama gruplarını kullanacağız.
Yakalama grupları, bulunan kısmın parçalarını koyabileceğiniz dizi elemanlarıdır. Bizim durumumuzda, birinci yakalama grubuna etki alanı adını, ikinciye ise bölgesini koyabiliriz.
Bunu yapalım. Öncelikle dizgideki etki alanını bulan bir düzenli ifade yazalım:
<?php
$reg = '#[a-z0-9_-]+\.[a-z]{2,}#';
?>
Şimdi düzenli ifademizde hangi parçaların hangi yakalama grubuna düşeceğini belirleyelim. Bu, yuvarlak parantezler kullanılarak yapılır. Bunlarla etki alanı adını arayan kısmı ve etki alanı bölgesini arayan kısmı ayıralım:
<?php
$reg = '#([a-z0-9_-]+)\.([a-z]{2,})#';
?>
Şimdi preg_match işlevinde
üçüncü parametre olarak bir değişken belirtelim (herhangi bir isimde):
<?php
preg_match($reg, $str, $res);
?>
Belirtilen değişkene, bulunan yakalama gruplarıyla dolu bir dizi gelecektir. Dizinin sıfırıncı elemanında bulunan dizgi, birinci elemanında - birinci yakalama grubu, ikinci elemanında - ikinci yakalama grubu ve bu şekilde devam edecektir:
<?php
preg_match($reg, $str, $res);
var_dump($res); // ['site.ru', 'site', 'ru'] çıktısını verir
?>
Bir tarih dizgisi verilmiştir:
<?php
$str = '2025-12-31';
?>
Yılı, ayı ve günü ayrı yakalama gruplarına koyun.
Bir dosya adı dizgisi verilmiştir:
<?php
$str = 'index.html';
?>
Dosya adını ve uzantısını ayrı yakalama gruplarına koyun.