17 Ekim 2012

Php regular expression fonksiyonları

preg_match_all(string $pattern,string $subject[,array &$matches[,int $flags=PREG_PATTERN_ORDER[,int $offset= 0]]] )

Belki de en çok kullanılan düzenli ifade fonksiyonu. $subject olarak verilen string içerisinde verilen uyuşmaları arar ve bulduğunda $matches dizisinin içerisine koyar. Eğer bulamazsa boş array döndürür.



// Comment
$text_str="Bu sabah yagmur var İstanbulda Gözlerim Dolu dolu oluyor Bilinmez yere";

$sonuclar=preg_match_all('/yagmur(.*?)dolu/',$text_str,$matches);

var_dump($matches);

var_dump çıktısı:
array
  0 => 
    array
      0 => string 'yagmur var İstanbulda Gözlerim Dolu dolu' (length=42)
  1 => 
    array
      0 => string ' var İstanbulda Gözlerim Dolu ' (length=32)
Burada önemli husus, preg_match_all sonrasında var_dump() ile sonucun ne olduğunu görmeniz. Bu sayede array'in hangi elemanını alacağımızı kolayca bulabiliyoruz. Mesela yağmur ve dolu arasındaki tum stringleri almak istiyoruz. $match=$matches[1] yaptığımızda $match Array 'i içerisine tüm istenen sonuçlar atanıyor. Yalnız $match bu durumda string değil arraydir. 


preg_match(string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )

$subject olarak verilen string içerisinde verdiğimiz desene($pattern) uygunluk var mı diye bakar. Eğer uyuşma bulunursa 1 , bulunamazsa 0 döner. 



$text_str="Bu sabah yagmur var İstanbulda Gözlerim Dolu dolu oluyor Bilinmez yere ";

$sonuc=preg_match('/dolu/i',$text_str);  //int 1

$sonuc=preg_match('/bos/i',$text_str); //int 0

preg_replace(mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1[,int&$count]] )
$subject içerisinde verilen desene($pattern) uygun olan bölümleri $replacement ile verilen array, string veya integer ile değiştirir. 
$text_str="Bu sabah yagmur var İstanbulda Gözlerim Dolu dolu oluyor Bilinmez yere ";

$replace='bos';
$sonuc=preg_replace('/dolu/i',$replace,$text_str); 
// $sonuc-> Bu sabah yagmur var İstanbulda Gözlerim bos bos oluyor Bilinmez yere



$pattern=array('/dolu/i','/yagmur/');
$replace=array('bos','kar');

$sonuc=preg_replace($pattern,$replace,$text_str);
         
//$sonuc-> Bu sabah kar var İstanbulda Gözlerim bos bos oluyor Bilinmez yere 

preg_filter($pattern,$replacement,$subject,[int $limit,[int &$count]] )
preg_replace fonksiyonuna benzer , ancak preg_filter sadece eşleşmeleri döndürür..
$text_arr=array("Kedi eti yemedi","Kedi fare yedi");
      $sonuclar=preg_filter('/fare/','herseyi',$text_arr);
// Out: Kedi herseyi yedi

Dizinin ilk elemanında eşleşme bulunmadığı için onu sonuçlar içerisine koymadı. preg_replace fonksiyonundan farkı budur.

preg_grep ( string $pattern , array $input [, int $flags = 0 ] )
fonksiyon girdi olarak bir dizi(array) ve karşılaştırma yapılacak olan şekli (pattern) alır. Eğer karşılaştırma tutarsa dizinin tutan elemanını döndürür.

$text_arr=array("Bu sabah yagmur var İstanbulda","Gözlerim","Dolu dolu oluyor","Bilinmez yere");

$sonuclar=preg_grep('/sabah/',$text_arr);
// Çıktı:   Bu sabah yagmur var İstanbulda

Hiç yorum yok:

Yorum Gönder