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
| Düzenli Ifadeler - 2 (Regular Expressions) »
Yorumlar
ü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
- Last.fm arayüzüne botoks yapıldı
- Nero’dan sıkılanlara, Ashampoo Burning Studio 8
- Avira AntiVir Türkçe destek vermeye başladı
- Soundtrack Pro ile Ortam Gürültüsünü Düzeltme
- Samsung i900 Omnia anons edildi
- Soundtrack Pro ile Ses Seviyelerini Normalleştirme
- tadilator.com “usta aramayı kolaylaştıran site”
- HTC Touch Diamond Kutu İçeriği
- GittiGidiyor.com’un yaratıcılarından yeni bir proje; Cimri.com BETA olarak yayında
- hayrettinkaraca.com
Rastgele Yazılar
- Google-Microsoft savaşları devam ediyor, yeni hedef Kevin Rose'un Digg.com'u
- Web 3.0 - Semantik Web
- Php ile Excel'den Mysql'e Veri Aktarımı
- Php5 ile Thumbnail
- House M.D yazarların grevinden sonra geri dönüyor
- Final Cut Pro’da Multicam Özelliği
- Php Windows 2008 Server için optimize edildi
- Bize Ulaşın
Son Yorumlar
- Burak: yazdığın yazıyla ilgisiz olacak ama
- mocobain: çok teşekkürler.
- sandokan: eyvallah kardeşim ya çok makbüle
- Bahadir Eryigit: güzel makale, teşekkürler
Bağlantılar
- burak.blicca.com
- Klipistan
- birazkisisel.com
- blogohbe.com
- fanişeyler sözlük
- Hayrettin Karaca
- ixbir.com
- Mahkum.net
- mavigenc.com
- nettenye.com
- Ozan Kılıç
- TeknolojiHerseyim.com









