![]() |
Php Düzenli İfadeler Hakkında Bilgi |
![]() |
![]() |
#1 |
Prof. Dr. Sinsi
|
![]() Php Düzenli İfadeler Hakkında BilgiPHP Düzenli İfadeler Hakkında Bilgi ![]() Düzenli İfadeler ^ ![]() ![]() ![]() ![]() ![]() ![]() ![]() Eşleştirme deyimleri ve işaretler PHP"nin karakter ve sıralanış eşlemede kullanılan düzenli ifade komutlarını kısaca ele alalım; sonra bunları kullanmamıza imkan veren fonksiyonları görelim ![]() ^hakk => "hakk" ile başlayan bütün kelimeleri bulur ![]() edilemez$ => Bu deyim ise PHP"ye "edilemez" ile biten bütün kelimeleri bulur ^hakkı$ => PHP, başında ^ işareti, sonunda $ işareti bulunan kararter sıralanışını, aynen arar; yani bu deyim, birinci örnekteki üç cümleyi de bulamaz ![]() Hakk => Bu deyim ise her üç cümleyi de buldurur; çünkü üçünde de bu dört karakter bu sıralanışla mevcuttur ![]() PHP"nin Düzenli İfadeleri, bütün rakam ve harfleri eşleştirebilir ![]() ![]() ![]() Düzenli İfadelerde Özel Karakterler [] Geri (Backspace) karakterini bulur ![]() Belirtilen karakterle sınırlanan kelimeyi bulur: k, "hak mücadelesi" ifadesindeki birinci k"yı bulur; çünkü bu harf, bir kelime sınırlayıcıdır ![]() B Belirtilen karakterle sınırlanmayan kelime yoksa, başlayanı bulur: kBi, "üç kişi" ifadesindeki "ki"yi bulur ![]() cX X yerine yazacağımız kontrol karakterini bulur ![]() ![]() d 0"dan 9"ya kadar bir rakamı bulur: IEd, her ikisi de herhangi bir rakamla biten "IE5" ve "IE4" değerlerini ikisini de bulur, D Herhangi bir ondalık işaretini bulur ![]() f Form-feed (kağıt çıkart) karakterini bulur ![]() Newline (yeni satır) karakterini bulur ![]() Return (satırbaşı) karakterini bulur ![]() s Boşluk (space) bulur ![]() S Yatay ve düşey sekme, kağıt-çıkart, yeni satır, satırbaşı ve boşluk dışındaki herhangi bir karakteri bulur ![]() Yatay sekme (Tab) karakterini bulur ![]() v Düşey sekme karakterini bulur ![]() w Herhangi bir harf, rakam veya alt-çizgiyi bulur ![]() W Harf, rakam ve alt-çizgi dışındaki karakteri bulur ![]() xHex Verilen 16 tabanlı (Hexadecimal) sayıya uygun Escape karakterini bulur ![]() 25, % işaretini bulur ![]() Bu arada noktalama işaretlerini arattırırken, önlerine ters bölü işareti koymak gerekir ![]() ![]() Karakter Grupları PHP"nin Düzenli İfadeleri"nde kolaylık sağlayan ve mesela ziyaretçinin bir Form"da bir INPUT etiketine verdiği yanıtıların içinde olmaması veya olmaması gereken karakterleri bulmamıza imkan veren karakter grupları oluşturma yöntemini de kullanabiliriz ![]() [OoUuÖöAaOoEeıIiİ] Karakter gruplarını köşeli parantez içinde yazarız ![]() ![]() [a-z] Herhangi bir küçük harfi bulur ![]() [A-Z] Herhangi bir büyük harfi bulur ![]() [a-zA-Z] Herhangi bir büyük veya büyük harfi bulur ![]() [0-9] Herhangi bir rakamı bulur ![]() [0-9 ![]() ![]() [ f ] Herhangi bir Form-feed (kağıt çıkart), Newline (yeni satır), Return (satırbaşı) karakterini veya boşluğu (space) bulur ![]() Sözgelimi, bir alfanümerik değer kümesinde b3, u2, n9 gibi birincisi küçük harf, ikincisi rakam olan iki karakterlik dizileri bulmak istiyorsak, arama grubunu şöyle kurarız: ^[a-z][0-9]$ => Bu deyim PHP"ye, a"da z"ye küçük harfle başlayan, (^işareti aranan unsurun değerin başında olması gerektiğini söylüyor) ve sonunda 0"dan 9"a bir rakam bulunan kelimeleri bulmasını söyleyecektir ![]() ![]() ^ işareti köşeli parantez içinde grup deyimi oluştururken kullanılırsa, bu olumsuzluk anlamı taşır ![]() ^[^0-9][0-9]$ => Burada en baştaki ^işareti "başında" demektir; ancak hemen arkasından gelen grupta "rakam olmayan" demiş oluyoruz; ikinci grup ve sonundaki $ işareti ile "rakamla biten" anlamına geliyor ![]() ![]() ![]() [^a-z] Küçük harf olmayan herhangi bir harfi bulur ![]() [^A-Z] Büyük harf olmayan herhangi bir harfi bulur ![]() [^\/^] , / veya ^ dışında herhangi bir karakteri bulur ![]() [^""] Çift ve tek tırnak dışında herhangi bir karakteri bulur ![]() Grup oluşturmada kullandığımız özel karakterler de vardır ![]() ![]() ![]() ^ ![]() ![]() Karakter eşleştirmede tekrar sayısı da bir özellik olarak kullanılabilir ![]() ![]() Örnekler: ^a{4}$ İçinde sadece dört adet küçük a harfi bulunan kelimeleri seç: aaaa ![]() ^a{2,4}$ İçinde sadece iki üç veya dört adet küçük a harfi bulunan kelimeleri seç: aa, aaa, aaaa gibi ^a{2, } İki veya daha fazla küçük a harfi bulunan kelimeleri seç: haar, haaar, haaaar gibi ![]() ![]() {2} Ardarda iki sekme işaretini bul ![]() ^-{0,1}[0-9]{1,}$ Negatif veya pozitif herhangi bir tam sayıyı bul ^[0-9]{1,}$ Pozitif herhangi bir tam sayıyı bul Bu tür deyim oluşturma işlemleri giderek karmaşıklaşabilir ![]() ^-{0,1}[0-9]{0, } ![]() Bu karmaşık deyim aslında sadece "Negatif veya pozitif bir ondalık (double) değeri bul," anlamına geliyor ![]() ![]() |
![]() |
![]() |
![]() |
Php Düzenli İfadeler Hakkında Bilgi |
![]() |
![]() |
#2 |
Prof. Dr. Sinsi
|
![]() Php Düzenli İfadeler Hakkında BilgiPHP bu tür karmaşık ifadelerin hatasız yazılmasını sağlayan kısayollara sahiptir ![]() ? {0,1} anlamına gelir ![]() ![]() * {0, } anlamına gelir ![]() ![]() ![]() ![]() + {1, } anlamına gelir ![]() ![]() Bu kısa-yolları kullanarak, yukarıdaki karmaşık ifadeleri basitleştirelim: ^[a-zA-Z0-9_]+Ş En az bir harf veya rakam veya altçizgi içeren herhangi bir kelime ^[0-9]+Ş Herhangi bir pozitif tamsayı ^-?[0-9]+Ş Herhangi bir tamsayı ^-?[0-9]* ![]() Bir Düzenli İfade"nin yazılışında birden fazla arama-sıralanış deyimine yer verebiliriz ![]() ![]() ![]() ![]() ![]() ifadesi ile, ya " ![]() ![]() ![]() ![]() ![]() Düzenli ifadeler yoluyla INPUT etiketinden gelen değerleri incelerken hata yapmak kolaydır ![]() ![]() ^ ![]() ![]() ![]() ![]() Örneğin bu ifade, ziyaretçinin elektronik posta adresini yazması gereken bir INPUT etiketinin sağladığı değerin gerçekten elektronik adres biçimi taşıyıp taşımadığını sınar ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Düzenli İfade Fonksiyonları Yukarıda öğrendiğimiz Düzenli İfade yazma tekniklerini, PHP"nin bize sağladığı beş fonksiyonda parametre olarak kullanırız ![]() ![]() ![]() ![]() ![]() ereg() ve eregi() PHP"nin temel Düzenli İfade Fonksiyonu, ereg(), arattığımız karakter sıralanışı bulunduğu taktirde doğru, bulamadığı taktirde yanlış karşılığı bir değer verir ![]() $bir_degisken = ereg("eşleştirilecek_sıra" , $kaynak , $yeni_değişken); Fonksiyonun aradığımız eşleştirmeyi yapması halinde, buradaki $bir_degisken"in değeri true/doğru, yapamaması halinde false/yanlış olacaktır ![]() ![]() ![]() ![]() eregi(), aynen ereg() fonksiyonu gibi çalışır; sadece eşleştireceği değerlerde büyük-harf/küçük-harf farkı gözetmez ![]() Daha önceki bölümde oluşturduğumuz ve kd_01 ![]() ![]() if (eregi("^ ![]() ![]() ![]() ![]() } else { $hata = "Elektronik posta adresinizde bir hata var!<br>"; echo $hata; include("kd_hata_halinde ![]() exit; } Program, bu örnekte $adres değişkeninde kayıtlı değerin içinde aradığı sıralamayı bulursa, eşleşen değeri $email adlı yeni bir değişkene yazacak ve if sınavının sonucu doğru olacaktır ![]() ![]() ereg_replace() ve eregi_replace() Gördüğümüz gibi, ereg() arattığımız karakter sıralanışı bulunduğu taktirde doğru, bulamadığı taktirde yanlış karşılığı verdikten sonraduruyor! Oysa kimi zaman arattığımız ve bulunan değerin başka bir değierle değiştirilmesi gerekebilir ![]() ereg_replace("eşleştirilecek_sıra" , yeni_metin , $kaynak); Fonksiyonun aradığımız eşleştirmeyi bulursa, bu değerin yerine verdiğimiz yeni metni koyacaktır; yeni metni bir değişkenin değeri olarak da verebiliriz ![]() ![]() ![]() ![]() ![]() $adi = ereg_replace("<","",$adi); $adi = ereg_replace(">","",$adi); $adres = ereg_replace("<","",$adres); $adres = ereg_replace(">","",$adres); $mesaj = ereg_replace("<","",$mesaj); $mesaj = ereg_replace(">","",$mesaj); Burada ereg_replace() fonksiyonu, ziyaretçiden gelecek üç değişkenin değerlerinde < ve > işaretlerini aramakta onların yerine içi boş bir metin ("") yazmaktardır ![]() split() Düzenli İfade ile çalışan bu fonksiyon, vereceğimiz eşleştirme sıralamasını sınırlayıcı olarak kullanarak, belirteceğimiz değerde bulduğu değer parçalarını ayırır ve bunları ayrı ayrı bir dizi değişkenin elemanları olarak kaydeder ![]() $yeni_dizi_değişken = split("eşleştirilecek_sıra" , $kaynak, sınır_sayısı); Fonksiyon, aradığı sıralamayı bulamazsa, false/yanlış sonucunu verir ![]() ![]() ![]() ![]() ![]() $metin = "İnsan sözüyle kendini gösterir, davranışlarıyla ruh halini aksettirir ![]() $aranan = " "; $yeni_dizi_değişken = split($aranan, $metin); foreach ($yeni_dizi_değişken as $eleman) { print "$eleman <br>"; } Bu programda PHP, $metin değişkeninin içerdiği değerde $aranan değişkeninin içerdiği değeri, yani boşluğu, eşleştirilecek unsur olarak kullanacak ve $metin değişkeninin değerini boşluklarından parçalara ayıracaktır ![]() ![]() ![]() sql_regcase() İçinde büyük harf-küçük harf ayrımı olan bir değeri büyük harf-küçük harf ayrımı olmayan Düzenli İfadeler haline çevirir ![]() ![]() <?php $metin = "Sözler"; echo(sql_regcase($metin); ?> Bu program, Browser penceresine şu metni yazdırır: [Ss][Öö][Zz][Ll][Ee][Rr] |
![]() |
![]() |
|