preg_match() ve regexpe
preg_match() Perl Uyumlu Düzenli Ifadeler (PCRE) fonksiyonlarindan biridir. Bu fonksiyon programciya
metin isleme konusunda diger metin fonksiyonlarindan daha çok esneklik saglar.
Preg_match() düzenli ifadeler kullanarak bir metin blogunu baska bir metnin içinde bulmak için
kullanilir.
Preg_match() 3 tane ifadeye ihtiyaç duyar. Bunlar
1. Düzenli ifade (regex)
2. Kaynak metin
3. Bir dizi degisken
Preg_match() sonuç olarak eslesen bir ifade varsa 1, eslesen bir ifade bulunamazsa 0 döndürür.
PHP: if (preg_match( “/J.r/”, $kaynak, $dizi))
print $dizi[0]
// Ekrana Jor yazdirir ?>
Burada düzenli ifademiz “/J.r/” ve metin içerisinde önce J, onu takip eden herhangi bir (1)
karakter (.) ve daha sonra bir r ariyor. Slash isaretleri ise (/) delimiter olarak adlandirilirlar
ve düzenli ifademizin sinirlarini belirlerler. Bir diger örnek ile devam edelim.
PHP: if ( preg_match( “/J.*n/”, $kaynak, $dizi ) )
print $dizi[0]
// Ekrana Jordan yazdirir ?>
Bu örnekte ise önce bir J, ardinda herhangi bir (1) karakter, ardindan herhangi bir oranda herhangi
bir karakter ve son olarak da bir n ariyoruz metnimizin içinde. Bu durumda .* için “herhangi bir
oranda herhangi bir karakter” diyebiliriz.
Zaman zaman * yerine + kullanmak da tercih edilebilir. + “bir veya daha fazla karakter”
manasindadir. + ve * arasindaki fark ise +’nın 0′ı da içermesidir.
“.*” = >=1
“+” = >=0
Düzenli ifadeler için açgözlüdür denebilir. Çünkü düzenli ifadeler aramanin ilk ve son sonucu
arasindaki her seyi bulmak isterler.
PHP: If ( preg_match( “/s.*g/”, $metin, $dizi) )
Print $dizi[0];
// Ekrana string strong big stung yazdirir ?>
Eger sadece ilk bulunan ifadeyi istiyorsak bir ? eklememiz gerekir.
PHP: If ( preg_match( “/s.*?g/”, $metin, $dizi) )
Print $dizi[0];
// Ekrana string yazdirir ?>
Bir metin içerisinde bizim kriterlerimize uygun olan tüm degerleri bir dizi içine atmak istersek
preg_match_all() fonksiyonunu kullanmamiz gerekir.
PHP: If ( preg_match_all( “/s.*?g/”, $metin, $dizi) )
Echo ”
“; Print var_dump($dizi); Echo “”;
/* Ekrana
array(1) {
[0]=>
array(3) {
[0]=>
string(6) “string”
[1]=>
string(6) “strong”
[2]=>
string(5) “stung”
}
}
Yazdirir */ ?>
Ayrica düzenli ifadeler içinde verilerin türlerini ifade eden karakterler kullanarak belirli
karakterleri arayabiliriz.
PHP: If ( preg_match(”/\d*-\d*-\d*/”, $metin, $dizi))
Print $dizi[0];
//Ekrana 06-01-05 yazdirir ?>
Burada aramada \d ondalik rakami ifade eder. Düzenli ifadelerle arama yaparken kullanilabilen veri
türleri ve içerdikleri degerler asagidaki listede gösterilmistir.
Ifade Tür Içerigi
\d Ondalik Sayi [0-9]
\D Ondalik olmayan herhangi bir karakter [^0-9]
\s Bosluk karakter [\t\n\r\f]
\S Bosluk karakteri disindaki herhangi bir karakter [^ \t\n\r\f]
\w “word” karakter [a-zA-Z0-9_]
\W “non-word” karakter [^a-zA-Z0-9_]
Comments:
You must be logged in to post a comment.