Linuxweb.Tr.GG Online PHP,MYSQL Kılavuzu - Karakter Grupları
   
Menü
  Ana Sayfa
  LinuxWeb Anket
  Bedava Linux Siteleri Evinize Teslim
  Linux Haberleri
  Linux Destek, Teknoloji ve Eğitim Kurumları
  Linux E-Book
  Linux Siteleri
  Windows'da Linux Temaları
  Temel Linux Komutları
  Temel Linux Komutları 2
  Linux Kitapları ve Dergileri
  Pardus Nedir ?
  Pardus İndir
  Pardus Değişenler
  Linux Dersleri 1
     
  PHP ve MYSQL
  PHP
  PHP'ye Giriş
  PHP ve Veritabanı
  PHP ve Web Sunucusu
  Unix/Linux Sistemleri
  Linux'ta program derlediniz mi?
  Güvenli socket ve Internet Erişimi Katmanı
  Windows-PWS ve IIS
  Browser Yetenek Dosyası: Browscap.ini
  PWS 4.0
  Windows'da Apache!
  Windows'da MySQL
  PHP Dili
  PHP'nin Yapı Taşları
  PHP programını durdurmak
  Değişkenler
  Veri Türleri
  Tür Değiştirme
  Fonksiyon
  Escape
  Dört yararlı fonksiyon
  İşlemciler (Operatörler)
  Bir Arttırmak veya Azaltmak için
  Sabit Değerler
  Tarih ve saat Verisi
  PHP'de Program Denetimi
  if Deyimi
  switch deyimi
  switch için kısa yol
  Döngüler
  while döngüsü
  do..while
  for döngüsü
  foreach
  Döngüyü sona erdirmek için: break
  Döngüyü sürdürmek için: continue
  Fonksiyonlar
  Fonksiyon Tanımlama ve Çağırma
  Fonksiyona varsayılan değer verebiliriz
  Değişkenlerin kapsamı: global ve static
  Dizi-Değişkenler, Nesneler
  Dizi Değişken Oluşturalım
  Dizi değişkenleri kullanalım
  Dizi Değişkenlerin Düzenlenmesi
  Dizileri birleştirme: array_merge()
  Dizilere değişken ekleme: array_push()
  Dizinin ilk elemanını silme: array_shift()
  Diziden kesit alma: array_slice()
  Dizileri sıralama: sort() ve rsort()
  İlişkili dizileri sıralama: asort() ve ksort()
  Nesneler
  Bir Nesne Oluşturalım
  PHP İşbaşında
  Formlar
  Form'dan GET Metoduyla Gelen Bilgiler
  URL Kodları
  Form'dan POST Metoduyla Gelen Bilgiler
  Form ile işlemciyi Birleştirelim
  Dosya "çıkartma"
  Dosya İşlemleri
  Harici Dosya (include)
  include mu, require mı?
  Dosyalar hakkında bilgi
  Dosya var mı? file_exits()
  Dosya mı, dizin mi? is_file() ve is_dir()
  Dosya okunabilir mi? is_readable()
  Dosya yazılabilir mi? is_writable()
  Dosya çalıştırılabilir mi? is_executable()
  Dosya boyutu: filesize()
  Dosyaya son erişim tarihi: fileadate(), filemtime() ve filectime()
  Dosyalar oluşturma ve silme
  Dosya açma
  Bir Fonksiyonu durdurmak için: Öl!
  Dosya okuma: fgets(), fread() ve fgetc()
  fseek() ile ölçü belirleme
  Dosyaya yazma ve ek yapma: fwrite() ve fputs()
  Kullanımdaki dosyayı kilitleyin!
  Dizinlerle İşlemler
  Dizin içeriğini listeleme: opendir() ve readdir()
  Dizin oluşturma: mkdir()
  Dizin silme: rmdir()
  Bir Dosya İşlemi Örneği: Konuk Defteri
  Metin Düzenleme ve Düzenli İfadeler
  Temel Alfanümerik Fonksiyonları
  substr()
  trim()
  ord()
  strlen()
  chr()
  printf() ve sprintf()
  number_format()
  Tarih ve Saat Düzenleme
  Düzenli İfadeler
  Eşleştirme deyimleri ve işaretler
  Düzenli İfadelerde Özel Karakterler
  Karakter Grupları
  Düzenli İfade Fonksiyonları
  ereg() ve eregi()
  ereg_replace() ve eregi_replace()
  split()
  sql_regcase()
  PHP ile Veritabanı
  MySQL Veritabanı
  mySQL veri türleri
  PHP-MySQL İlişkisi
  PHP'de Güvenlik
  Parola ve SSL
  Tırnak İşareti Sorunu
  PHP Kaynakları
       

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.

   
Bugün 59 ziyaretçi (69 klik) Tekil ziyaretci sitemizi ziyaret etti...
Bu web sitesi ücretsiz olarak Bedava-Sitem.com ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol