D÷kŘman Ekle | KŘnye | Reklam | Bize Ula■řn | ▄yelik

16.04.2024

Anasayfa

C/C++

Visual C#.NET

ASP / ASP.NET

Component

Delphi

Unix/Linux

Java Script

PHP

Perl

Visual Basic / VB.NET

Assembly

OpenGL

Yapay Zeka

Veritaban├Ż Sistemleri

Yaz├Żl├Żm M├╝hendisli├░i

Elektronik

IIS

e-turka Forum

TŘrkiye'nin Bilgisayar ve Elektronik Konulu Tartř■ma Platformuna Katřlmak Ţšin...

Duyurular

07 Kasřm 2004 12:37

PHP ve Regular Expresion Kulan├Żm├Ż

Regular Expresions yani kurall├Ż ifadeler ad├Żndanda an├żal├Żca├░├Ż gibi bir metin par├žas├Ż i├žerisinde bir ├Ârne├░i tan├Żmlamak i├žin kullan├Żl├Żr. Php POSIX ve Perl t├╝r├╝ kurall├Ż ifadeleri desteklemektedir. POSIX stili Perl stiline g├Âre biraz daha basittir. Bu makalemizde POSIX stilini ele alaca├░├Żz.

Karakter K├╝meleri

Karakter k├╝meleri┬á belirli bir tipteki karakter gruplar├Żn├Ż tan├Żmlamak i├žin kullan├Żl├Żr. A├ża├░├Żda bu k├╝meleri tan├Żmlamak i├žin kullan├Żlan s├Żn├Żf ve karakterler listelenmi├żtir.

├ľn Tan├Żml├Ż S├Żn├Żflar

[[ : alpha : ]] Alfabetik karakterler.

[[ : alnum : ]] Alfanumerik karakterler.

[[ : lower : ]] K├╝├ž├╝k harfler

[[ : upper : ]] B├╝y├╝k harfler

[[ : digit : ]] Ondal├Żk basamaklar

[[ : xdigit : ]] On alt├Żl├Żk basamaklar

[[ : punct : ]] Noktalama i├żaretleri

[[ : blank : ]] Sekmeler ve bo├żluklar

[[ : space : ]] Beyaz bo├żluk karakteri

[[ : cntrl : ]] Kontrol karakterleri

[[ : print : ]] T├╝m yazd├Żr├Żlabilir karakterler

[[ : graph : ]] Bo├żluk d├Ż├ż├Żnda t├╝m yazd├Żrabilir karakterler

"[]" K├Â├żeli parantezin d├Ż├ż├Żnda kullan├Żlan karakterler

\ Escape karakteri

^ String'in ba├ż├Żnda e├żle├żtirir.

$ String'in sonunda e├żle├żtirir.
. New line (yeni sat├Żr) karakteri hari├ž her karakterle e├żle├żtirir.

| Alternatif dal├Żn ba├żlang├Żc├Ż (yani OR)

( Alt ├Ârne├░i ba├żlat

) Alt ├Ârne├░i sonland├Żr.

* 0 veya daha fazla tekrarla

+ 1  veya daha fazla tekrarla

{ min/max nicelik g├Âstergesini ba├żlat

} min/max nicelik g├Âstergesini sonland├Żr

"[]" K├Â├żeli parantezin i├žinde kullan├Żlan karakterler

\ Escape karakteri

^ Sadece ba├żlang├Ż├ž konumunda kullan├Żld├Ż├░├Żnda NOT (de├░il)

- Karakter aralar├Żn├Ż belirlemek i├žin kullan├Żl├Żr.

NOT : [ ve ] karakterleri yeni s├Żn├Żf tan├Żmlamak i├žin kullan├Żl├Żr.

Bu kadar ├Ân bilgiden sonra ├żimdide bu karakter ve s├Żn├Żflar├Żn nerelerde ve nas├Żl kullan├Żld├Ż├░├Żna bir g├Âz atal├Żm.

Tekrarlar:
String i├žinde bir arama yapt├Żg├Żm├Żzda ├žo├░u zaman birden fazla yerde ge├žme ihtimalini kullanmak isteyecektiriz. Bunu kurall├Ż ifademizin i├žine '*' veya '+' i├żaretini kullanarak ger├žekle├żtirebiliriz. Yukar├Żdada dedi├░imiz gibi * i├żareti 0 veya daha fazla tekrarla + i├żaretide 1 veya daha fazla tekrarla anlam├Żn├Ż ta├ż├Żmaktad├Żr. K├╝├ž├╝k bir ├Ârnek ile g├Âsterecek olursak;

[[ : alnum : ]]+┬á patern'i en az bir alfanumerik karakter manas├Żna gelmektedir.
[aA]* 0 veya daha "a" veya "A" karakteri manas├Żna gelmektedir.

Alt ├Łfadeler :┬á
Bir ifadeyi alt ifadeler b├Âlebilmek ├žok faydal├Żd├Żr. Bu yolla ...... gibi bir┬á ifadenin ba├ż├Żnda veya sonunda ├ż├Âyle olsun b├Âyle olsun gibi kurallar├Ż tan├Żmlamak olduk├ža kolay olur. Alt ifadeler ( ve ) karakterleri kullan├Żlarak tan├Żmlan├Żr. K├╝├ž├╝k bir ├Ârnek ile g├Âsterecek olursak;

(ali)* Veli gibi bir patern ali, ali Veli, ali ali Veli gibi stringlerle e├żle├żir.

Say├Żl├Ż Alt ├Łfadeler
Say├Żl├Ż alt ifadeler bir karakter veya karakter grubunun ka├ž defa tekrar edece├░ini belirtir. { ve } karakterleri kullan├Żlarak tan├Żmlan├Żr. ├ľrne├░in;

(ali){1,3} Veli patern'i ali, aliali, alialiali stringleriyle e├żle├żir.

Stringin ba├ż├Żn├Ż veya sonunu kontrol etmek:
Belirli bir karakter veya karakter grubunun stringin ba├ż├Żnda, sonunda veya her ikisinde olup olmad├Ż├░├Żn├Ż kontrol etmek i├žin kullan├Żl├Żr. Ba├ż├Żnda olup olmad├Ż├░├Żn├Ż kontrol etmek i├žin ^ karakteri, sonunda olup olmad├Ż├░├Żn├Ż kontrol etmek i├žin $ karakteri kullan├Żl├Żr. ├ľrnegin;

^ali patern'i ali......... gibi strinlerle e├żle├żir.
ali$ patern'i ..........ali gibi stringlerle e├żle├żir.

OR Kullan├Żm├Ż
|┬á karakteri ile tan├Żmlan├Żr. ├ľrnegin;

(com) | (net) | (org) patern'i com, edu veya net stringlerinden herhangi biri ile e├żle├żir.

├ľzel Karakterleri Kullanmak
., {, [, $ ...... gibi patern tan├Żmlamada kulan├Żlan karakterlerle i├żlem yap├Żlmak istedi├░imizde bunlar├Żn ba├ż├Żna \ karakterini ekleyerek kullanmal├Ży├Żz. E├░er \ karakteri ile e├żle├żtirme yapacaksak \\ patern'ini kullanmal├Ży├Żz.

├Ł├żte bu kadar. S├Żra geldi birka├ž b├╝y├╝k ├Ârnek ile konuyu peki├żtirip daha sonra PHP'nin ereg ve eregi fonksiyonlar├Ż ile d├╝zenli ifadelerin nas├Żl kullan├Żd├Ż├░├Żn├Ż ele almaya.

├ľrnek 1: e-mail adresi kontrol├╝

Bilindi├░i gibi bir email adresi xxxx@xxxx.xxx gibi bir formata sahiptir. Yani;
1. Baz├Ż alfan├╝merik karakterler veya noktalama i├żaretlerinin ard├Żndan bir @ i├żareti
2. Baz├Ż alfan├╝merik karakterler veya noktalama i├żaratlerinin ard├Żndan bir . i├żareti
3. Vede en son olarak yine baz├Ż alfan├╝merik karakterler veya noktalama i├żaratlerinden en az bir tanesi kullan├Żlarak olu├żturulabilir. Bunun patern'ini olu├żturacak olursak;

1. ad├Żm i├žin patern'imiz ^[a-zA-Z0-9_]+@ (say├Ż, harf ve _ i├żaretlerinden en az biri ile ba├żlayan)
2. ad├Żm i├žin patern'imiz [a-zA-Z0-9_\-]+\. (Not:┬á . ve - karakterleri patern tan├Żmlamada ├Âzel anlam ta├ż├Żd├Ż├░├Ż i├žin \ ile birlikte kullan├Żlm├Ż├żt├Żr.)
3. ad├Żm i├žin patern'imiz [a-zA-Z0-9\-\.]+$ (say├Ż, harf, -, .) karakterlerinin en az biri ile biten

ereg ve eregi Fonksiyonlar├Żn├Żn kullan├Żm├Ż
ereg ve eregi fonksiyonlar├Ż bir string ifade i├žerisinde regular expresion kullanarak arama yapmak i├žin kullan├Żl├Żr. Aralar├Żndaki tek fark eregi'nin b├╝y├╝k k├╝├ž├╝k ayr├Żm├Ż yapmamas├Żd├Żr.
ereg() fonksiyonunun prototipi a├ża├░├Żdaki gibidir.
        bool ereg(string patern, string search, [string matches);

E├░er arama sonucu ba├żar├Żl├Ż ise geriye true d├Ânderir.

Kullan├Żm├Ż :

$patern = "^[a-zA-Z0-9_]+@" . "[a-zA-Z0-9_\-]+\." . "[a-zA-Z0-9\-\.]+$";
$email = "meminaydin@e-turka.com";
if(! ereg($patern, $email) )
{
┬á┬á┬á echo "Email Adresi Yanl├Ż├ż";
    exit;
}
else
{
    echo "Email Adresi Doðru";
    exit;
}
?>

veya

$patern = "(^[a-zA-Z0-9_]+@)" . "([a-zA-Z0-9_\-]+\.)" . "([a-zA-Z0-9\-\.]+$)";
$email = "meminaydin@e-turka.com";
if(! ereg($patern, $email, $matches) )
{
┬á┬á┬á echo "Bulunamad├Ż";
}
else
{
    echo "Bulundu" . "
"
;
    for($i=0; $i<count($matches); $i++)
    {
        echo ($i + 1) . " " . $matches[$i] . "
"
;
    }
   
//alt guruplara ayr├Żlarak veriye par├ža par├žada eri├żilebilir ilk eleman verinin b├╝t├╝n halini i├žerir
}

?>

 

Mehmet Emin Ayd├Żn (meminaydin@hotmail.com)
www.e-turka.com
Bilgi payla├żt├Żk├ža ├žo├░al├Żr.

Bu Yazř Toplam 16618 Defa Okunmu■tur
Yazarřn Di­er Yazřlarř Ţšin
Bu Yazřyř

Yazdřr

Arkada■řna G÷nder

Yorum Ekle

Yorumlar

Bu Habere Toplam 1 Yorum Eklenmi■tir.

tesekkur

cok tesekkur ederim devam├Żn├Ż dilerim
26.01.2007 14:26, murat

En ăok Okunanlar
En Son Eklenenler


IIS 6.0 SSL Sertifika Yukleme


Sa├░ t├Żklamay├Ż ge├žersiz k├Żlma


Assembly ile dosyalama


├çal├Ż├żan uygulamay├Ż kapatma


PIC-PC seri haberlesme(kesmeli)


PIC'ten PC'ye seri portan veri g├Ând.


MsgDlg Caption De├░i├żtirme


Multiple Select Kontrol├╝


Javascript ile Radio Button Kontrol├╝


JMenuBar Kullan├Żm├Ż

Anket
Ne olarak ├žal??mak istersiniz?
Proje M├╝d├╝r├╝
Sistem Geli├żtirme Uzman├Ż
Yaz├Żl├Żm M├╝hendisi
Sistem Y├Âneticisi

www.e-turka.com ę 2003 - BŘtŘn haklarř saklřdřr l Tel: 0 (332) 241 33 81 l E-mail: info@e-turka.com
Bu site en iyi 800x600 ve Řzeri š÷zŘnŘrlŘkte g÷rŘntŘlenebilir.