Tekil Mesaj gösterimi
  #1
Alt 08.04.2007, 12:33
cengaver1
 
Üyelik tarihi: 02.01.2006
Mesajlar: 90
Teşekkür etti: 0
0 Teşekkür 0 Mesaja aldı
preg_match() ve regexpe Giriş

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- Kodu:
<?php $kaynak"Michael Jordan is a great player"
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- Kodu:
<?php $kaynak "Michael Jordan is a great player"
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- Kodu:
<?php $metin"string strong big stung"
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- Kodu:
<?php $metin"string strong big stung"
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- Kodu:
<?php $metin"string strong big stung"
If ( 
preg_match_all"/s.*?g/"$metin$dizi) ) 
Echo 
"<pre>"
Print 
var_dump($dizi); 
Echo 
"</pre>";   
/* 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- Kodu:
 <?php $metin"Bugün 06-01-05";  
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_]
cengaver1 isimli Üyemiz şuan sistemimize bağlı değildir. (Offline)   Alıntı ile Cevapla