Düzenli Ifadeler - 1 (Regular Expressions)


Perl, JavaScript gibi dillerde olan Düzenli Ifadeleri(Regular Exporessions) Php’de de görmek mümkün. Bazı programcılara başlangıçta zor ve karışık gelen bu yapı bizlere geniş text veriler içerisinde kontroller ve değişiklikler yapmamızı sağlıyor.

Düzenli ifadeleri, Text Editörlerinde olan metin içerisinde belirli kelimeleri bulmamızı veya değiştirmemizi sağlayan komutların çok daha gelişmişi olarak düşünebiliriz. Php bu anlamda bizlere iki seçenek sunuyor. PERL Uyumlu Düzenli Ifade Fonksiyonları ve POSIX Düzenli Ifade Fonksiyonları.

POSIX Düzenli Ifade Fonksiyonları

Ereg: En genel kullanılan düzenli ifade fonksiyonudur. Parametre ile gönderilen string içerisinde bir düzenli ifade arar. Bulursa True bulamaz ise False döner.

Ilk parametre aranacak düzenli ifade şablonudur. Ikinci Parametre arama yapılacak string olarak atanır. Ücüncü parametre tercihe bağlıdır, eşleşen stringin değelerini bir diziye atar. Dizinin sıfırıncı elemanında tüm eşleşen ifade vardır. Soldan itibaren ilk elemanı dizide birinci sırada bulunur, artarak devam eder. Eşleşmeleri yaparken küçük ve büyük harf ayrımı gözetir.

int ereg ( string pattern, string string [, array regs]);
if (ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})”, $date, $regs))
echo “$regs[3].$regs[2].$regs[1]“;
else
echo “Invalid date format!”;

Ereg_replace: String içerisinde aradığı şablonu bulup ikinci parametre ile değiştirir ve yeni stringi geri döndürür. Küçük ve büyük harf ayrımı gözetir.

string ereg_replace ( string pattern, string replacement, string string);

/* Beklendiği gibi çalışmayan örnek. */
$num = 4;
$string = "Bu string dört kelimedir.";
$string = ereg_replace('dört', $num, $string);
echo $string; /* Çıktı: 'Bu string kelimedir.' */

/* Çalışan örnek. */
$num = '4';
$string = "Bu string dört kelimedir.";
$string = ereg_replace('dört', $num, $string);
echo $string; /* Çıktı: 'Bu string 4 kelimedir.' */

Eregi: Ereg’den tek farkı küçük büyük harf farkı olmamasıdır.

int eregi ( string pattern, string string [, array regs]);

if (eregi("z", $string)) {
echo "'$string' contains a 'z' or 'Z'!";
}

Eregi_replace: Ereg_replace gibi çalışır sadece küçük büyük harf ayrımı yapmaz.

string eregi_replace ( string pattern, string replacement, string string);

Split: Istenen string içerisinde olan düzenli ifadeyi arar. Bulduğu ifadeyi dizi olarak geri gönderir. Case-sensitive çalışan bir fonksiyondur.

Eğer düzenli ifade kullanmayacaksanız bu fonksiyondan daha hızlı çalışan fakat aynı görevi yapan explode fonksiyonunu kullanabilirsiniz. Son parametre limit belirtmek için kullanılır.

array split ( string pattern, string string [, int limit]);

$date = "04/30/1973";
list ($month, $day, $year) = split ('[/.-]‘, $date);
echo “Month: $month; Day: $day; Year: $year<br>\n”;

Spliti: Split fonksiyonundan tek farkı caseinsensitive olarak çalışmasıdır.

array spliti ( string pattern, string string [, int limit]);

Neden Düzenli Ifadelere Ihtiyaç Duyarız?

Bazen kullanıcıdan gelen form verilerini doğrulamak veya belli metinler içerisinde bulunan stringleri aramak-değiştirmek bazen de başka sitelerden verileri çekerken bu yönetmi kullanabiliriz. Elbette tek tek karakterleri kontol edip de istediğimiz şeyleri yapmamız mümkün. Fakat düzenli ifadeler kullanıldığı zaman işler çok daha kolaylaşıp, hızlanacaktır.

Bazı programcılar düzenli ifadelerin scriptin performansının düşmesine yol açtığını söylemektedir. Bu karşılaştırma ve arama sürecinde son derece olası bir sonuçtur. Fakat çok büyük stringler söz konusu olmadıkça ciddi performans düşmeleri olmayacaktır.

Kullanıcının girdiği e-mail adresinin doğruluğunu düzenli ifade kullanmadan kontrol edelim;

function validateEmail($email){
$hasAtSymbol = strpos($email, "@");
$hasDot = strpos($email, ".");
if($hasAtSymbol && $hasDot)
return true;
else
return false;
}
echo validateEmail("root@websoldier.net");

Düzenli ifadeler ile çok daha fazla kriteri tek satırda kontrol etmemiz mümkün;

function validateEmail($email) {
return ereg("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$”, $email);
}
echo validateEmail(root@websoldier.net);

KAYNAKLAR: Devarticles, Php Manual

Yazıyı Paylaş:

Bu yaziyi paylasin.
  • Digg
  • del.icio.us
  • 100puan
  • Technorati
  • Limk
  • Bagcik
  • Tusul
  • Oyyla
  • Yumiyum
  • Reddit.tr

  |   Düzenli Ifadeler - 2 (Regular Expressions) »



Yorumlar

Kullanıcı girişi yaparak ya da zorunlu olan * alanlarını doldurarak yorum yapabilirsiniz.

İsminiz *

Email adresiniz *

Web siteniz

Mesajınızı buraya yazabilirsiniz:

Bu Yazı Hakkında

üzerinde şu anda okumakta olduğunuz 'Düzenli Ifadeler - 1 (Regular Expressions)' isimli yazı 13 Haz 2007 tarihinde, saat: 06:49 'de admin tarafından gönderilmiş.

Benzer yazıları Php kategorilerinden okuyabilirsiniz. Yazar ile irtibat kurmak için email gönderebilirsiniz. Yazıya yorum yapabilir ya da yapılan yorumları RSS 2.0 ile takibe alabilirsiniz.


Eklenen Son Yazılar
Rastgele Yazılar
Son Yorumlar
Bağlantılar