Alfabetik Sıralama :ABCDEFGHIJKLMNOPQRSTUVWXYZ -


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. Sözgelimi bütün sesli hafleri aratmak için şöyle bir karakter grubu oluşturabiliriz:

[OoUuÖöAaOoEeıIiİ]

Karakter gruplarını köşeli parantez içinde yazarız. Bu deyimle, PHP, içinde herhangi bir sesli harf bulunan bütün değerleri eşleştirecektir. Bu yöntemden yararlanarak, şu grupları kullanabiliriz:

[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.-] Herhangi bir rakamı, noktayı veya kesme çizgisini bulur.


[ frtn] 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. PHP, bu kelimenin sadece iki harfli olmasına dikkat edecektir; çünkü grubumuzun bir başı ve bir de sonu belirlendiğine göre, üç karakterli değerlerin bulunması imkanı yoktur.

^işareti köşeli parantez içinde grup deyimi oluştururken kullanılırsa, bu olumsuzluk anlamı taşır. Sözgelimi, iki rakamlı ancak birinci karakteri rakam olmayan fakat ikinci karakteri rakam olan değerlerin bulunması için şu deyim gerekir:

^[^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. Deyimde sadece baş ve sonu gösteren iki eşleştirme unsuru bulunduğuna göre bu deyim, "başında rakam olmayan, sonunda rakam olan iki karakterli değerleri" bulmaya yarayacaktır. Bu deyim söz gelimi 13`ü bulmayacak, fakat u2`yi bulacaktır. Bu yöntemle şu grupları yapabiliriz:

[^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. Örneğin nokta işareti (.), yeni satır başlangıcı olmayan herhangi bir karakter anlamına gelir. Dolayısıyla,

^.0$

deyimi yeni satırla başlamayan ve sıfır ile biten herhangi iki karakterli değeri bulacaktır.

PHP`nin kullanılmaya hazır özel Düzenli İfade eşleştirme grupları da vardır:

[[:alpha:]] Herhangi bir harf

[[:digit:]] Herhangi bir rakam

[[:alnum:]] Herhangi bir harf veya rakam

[[:space:]] Herhangi bir boş karakter

[[:upper:]] Herhangi bir büyük harf

[[:lower:]] Herhangi bir küçük harf

[[:punc:]] Herhangi bir noktalama işareti

[[:xdigit:]] Herhangi bir Hexadecimal karakter. [0-9a-fA-F]


Karakter eşleştirmede tekrar sayısı da bir özellik olarak kullanılabilir. Tekrar sayısı belirtmek için süslü parantez ({}) kullanırız. Ö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. Bu deyim "har" kelimesini seçmez.

t{2} Ardarda iki sekme işaretini bul

.{2} Herhangi çift karakteri bul: aa, &&, == gibi

^-{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. Örneğin:

^-{0,1}[0-9]{0, }.{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. Kısaca irdelersek, aranan degerin sıfır veya bir kere tekrarlanan bir kesme çizgisiyle başlayabileceğini ("Sıfır veya bir kere" demek, olsa da olur, olmasa da anlamına geliyor!) bunu sıfır veya daha fazla kere tekrarlanan bir rakamın izleyebileceğini, onu da sıfır veya bir kere tekrarlanan bir nokta işareti ile sonunda sıfır veya daha fazla kere tekrarlanan herhangi bir rakamın izleyebileceğini söylemiş oluyoruz.

PHP bu tür karmaşık ifadelerin hatasız yazılmasını sağlayan kısayollara sahiptir. Bunları sıralayalım:

? {0,1} anlamına gelir. Kendisinden önce yer alan unsurun en az sıfır en çok bir kere tekrar edilmesi gerektiğini (olmayabileceğini ama olursa en fazla bir kere olabileceğini) belirtir.

* {0, } anlamına gelir. Kendisinden önce yer alan unsurun sıfır veya daha fazla kere tekrar edilmesi gerektiğini (tümüyle opsiyonel olduğunu) belirtir.

+ {1, } anlamına gelir. Kendisinden önce yer alan unsurun en az bir veya daha çok kere tekrar edilmesi gerektiğini (bulunmasının zorunlu olduğunu) belirtir.

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]*.[0-9*$]+Ş Herhangi bir kesinli (double) sayı


Bir Düzenli İfade`nin yazılışında birden fazla arama-sıralanış deyimine yer verebiliriz. Bunu yapmamızı sağlayan | işaretidir. Örneğin,

.com|.co.uk

ifadesi ile, ya ".com" ya da ".co.uk" değerlerinin bulunmasını sağlayabiliriz. Burada | işareti "veya" kelimesi gibi düşünebilirsiniz.

Düzenli ifadeler yoluyla INPUT etiketinden gelen değerleri incelerken hata yapmak kolaydır. Bunun için kendi ifadelerinizi mutlaka sçeşitli olasılıklara karşı sınamalısınız. Bu bölümün başında örnek olarak verdiğimiz Düzenli İfade`yi hatırlıyor musunuz?

^.+@.+..+$

Ö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. Baştaki ^ ve nokta işaretleri ile artı işareti değerin önünde boşluk olmamasını sağlıyor; @ işareti ise değerin içinde @ bulunması gerektiğine işaret ediyor. Tekrar eden nokta ve artı işaretleri "ne kadar olursa olsun ve ne olursa olsun" anlamına geliyor. Bunu izleyen nokta karakterini gösteren (.) işaret buralarda bir de gerçekten nokta olması gerektiğini ve bunu izleyen nokta ve artı tekrar "ne olursa olsun, ne kadar olursa olsun" anlamını taşıyor. Başka bir deyişle, aradığımız değerin "herhangi bir şey" @ "herhangi bir şey daha" . "birşeyler daha" şeklinde olduğunu belirtmiş oluyoruz. Ne var ki deyimiçinde iki nokta veya iki @ işareti olan veya @ işareti ile nokta arasında bir şey bulunmayan veya @ veya noktadan öncesi ya da sonrası boş olan bütün değerleri safdışı etmeye yetmeyecektir. Sözgelimi bir ziyaretçimiz "@@@@.@@@" yazarsa, bu deyim bu değeri geçerli bir elektronik adres sayacaktır.

PHP programlarımızda ziyaretçilerimizin verdiği değerleri çeşitli bakımlardan sınamak ve seçmek mümkündür; ancak hiç bir zaman yazılanların doğruluğunu garanti edemeyiz. Fakat özellikle bir metinde bulunmaması gereken işaretlleri PHP`ye aratabiliriz. Bunu Düzenli İfade Fonksiyonları sağlar.


Konu: PHP De Karakter Grupları
 
Okunma Sayısı : 273
Eklenme Tarihi : 25 Ocak 2007, Perşembe
SONRAKI BILGI : Janet robot oldu   
Forum Linki:
Aranan Kelime:
 

En Yeni Bilgiler


 PHP De Formlar Get Metodu PHP De Formlar Get Metodu
 PHP De While döngüsü PHP De While döngüsü
 PHP ve Tırnak İşareti PHP ve Tırnak İşareti
 PHP De Parola PHP De Parola
 PHP ve MySQL İlişkisi PHP ve MySQL İlişkisi
 Mysql Veri Türleri Mysql Veri Türleri
 PHP De sql_regcase() PHP De sql_regcase()
 PHP De split() PHP De split()
 PHP De ereg_replace() ve eregi_replace() PHP De ereg_replace() ve eregi_replace()
 PHP De ereg() ve eregi() PHP De ereg() ve eregi()
 PHP De Karakter Grupları PHP De Karakter Grupları
 PHP De Düzenli İfadelerde Özel Karakterler PHP De Düzenli İfadelerde Özel Karakterler
 PHP De Eşleştirme deyimleri ve işaretler PHP De Eşleştirme deyimleri ve işaretler
 PHP De chr() Düzenli İfadeler PHP De chr() Düzenli İfadeler
 PHP De Tarih ve Saat Düzenleme PHP De Tarih ve Saat Düzenleme
 PHP De number_format() Fonksiyonu PHP De number_format() Fonksiyonu
 PHP De printf() ve sprintf() PHP De printf() ve sprintf()
 PHP De strlen() Fonksiyonu PHP De strlen() Fonksiyonu
 PHP De chr() Fonksiyonu PHP De chr() Fonksiyonu
 PHP De trim() Fonksiyonu PHP De trim() Fonksiyonu
 PHP De Alfanümerik Fonksiyonlar PHP De Alfanümerik Fonksiyonlar
 PHP De Örnek Dosya İşlemi PHP De Örnek Dosya İşlemi
 PHP De Dizin Silme PHP De Dizin Silme
 PHP De Dizin Oluşturma PHP De Dizin Oluşturma
 PHP De Dosya Kilitleeme PHP De Dosya Kilitleeme
 PHP De Dosyaya yazma ve ek yapma PHP De Dosyaya yazma ve ek yapma
 PHP De fseek() ile ölçü belirleme PHP De fseek() ile ölçü belirleme
 PHP De Dosya Okuma PHP De Dosya Okuma
 PHP De Fonkisyon Durdurma PHP De Fonkisyon Durdurma
 PHP De Dosya açma PHP De Dosya açma
 PHP De Dosyalar oluşturma ve silme PHP De Dosyalar oluşturma ve silme
 PHP De Dosyaya son erişim tarih PHP De Dosyaya son erişim tarih
 PHP De Dosya Boyutu PHP De Dosya Boyutu
 PHP De is_executable() PHP De is_executable()
 PHP De is_writable() PHP De is_writable()
 PHP De is_readable() PHP De is_readable()
 PHP De is_file() ve is_dir() PHP De is_file() ve is_dir()
 PHP De Dosya Kontrolü PHP De Dosya Kontrolü
 PHP De include ve require PHP De include ve require
 PHP De Dosya Ekleme (include) PHP De Dosya Ekleme (include)
 PHP De Dosya Yükleme PHP De Dosya Yükleme
 PHP De Formlar ve İşlemci PHP De Formlar ve İşlemci
 PHP De Formlar Post Metodu PHP De Formlar Post Metodu
 PHP De URL Kodları PHP De URL Kodları
 PHP De Formlar PHP De Formlar
 PHP De Nesne Oluşturma PHP De Nesne Oluşturma
 PHP De Nesneler PHP De Nesneler
 PHP De Dizileri sıralama PHP De Dizileri sıralama
 PHP De Diziden kesit alma PHP De Diziden kesit alma
 PHP De Dizinin ilk elemanını silme PHP De Dizinin ilk elemanını silme
 PHP De Dizilere değişken ekleme PHP De Dizilere değişken ekleme
 PHP De Dizi Değişkenlerin Düzenlenmesi PHP De Dizi Değişkenlerin Düzenlenmesi
 PHP De Dizi Değişkenleri Kullanma PHP De Dizi Değişkenleri Kullanma
 PHP De Dizi Değişken Oluşturma PHP De Dizi Değişken Oluşturma
 PHP De Dizi Değişkenleri PHP De Dizi Değişkenleri
 PHP De Değişken Kapsamı PHP De Değişken Kapsamı
 PHP De Fonksiyonlara Değer Verme PHP De Fonksiyonlara Değer Verme
 PHP De Fonksiyonlar PHP De Fonksiyonlar
 PHP De Continue PHP De Continue
 PHP De Breack PHP De Breack
 PHP De foreach döngüsü PHP De foreach döngüsü
 PHP De For Döngüsü PHP De For Döngüsü
 PHP DE do..while PHP DE do..while
 PHP ve Switch PHP ve Switch
 PHP ve if - else - ifelse PHP ve if - else - ifelse
 PHP ve Tarih Saat PHP ve Tarih Saat
 PHP ve Sabit Değerler PHP ve Sabit Değerler
 PHP De Azaltma ve Arttırma PHP De Azaltma ve Arttırma
 PHP De Dört İşlem PHP De Dört İşlem
 PHP Deki Dört Yararlı Fonksiyon PHP Deki Dört Yararlı Fonksiyon
 PHP De Boşluklar PHP De Boşluklar
 PHP ve Fonksiyonlar PHP ve Fonksiyonlar
 PHP ve Tür Değiştirme PHP ve Tür Değiştirme
 PHP ve Veri Türleri PHP ve Veri Türleri
 PHP`de Değişkenler PHP`de Değişkenler
 Windows`da MySQL Windows`da MySQL
 Windows`da Apache Windows`da Apache
 PWS 4.0 PWS 4.0
 Browser Yetenek Dosyası Browser Yetenek Dosyası
 IIS 4.0 ve 5.0 IIS 4.0 ve 5.0
 Windows-PWS ve IIS Windows-PWS ve IIS
 Güvenli socket ve Internet Erişimi Katmanı Güvenli socket ve Internet Erişimi Katmanı
 Linux`ta program derlediniz mi? Linux`ta program derlediniz mi?
 Unix - Linux Sistemleri Unix - Linux Sistemleri
 PHP ve Web Sunucusu PHP ve Web Sunucusu
 PHP ve Veritabanı PHP ve Veritabanı
 PHP`ye Giriş PHP`ye Giriş
 MD5 ile Şifreleme MD5 ile Şifreleme
 

 

 

Copyright © 2008 Temha.neT