Kayıt Ol

Giriş

Şifremi Kaybettim

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Giriş

Kayıt Ol

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi adipiscing gravdio, sit amet suscipit risus ultrices eu. Fusce viverra neque at purus laoreet consequa. Vivamus vulputate posuere nisl quis consequat.

Php Dersleri – Regular Expression

Merhaba arkadaşlar mobilhanem.com için hazırladığımız Php derslerimizde bu ders Regular Expression (regex) konusuna bakacağız.  Regex string ifadeler ile işlem yapmamızı sağlayan başlı başına bir sorgu dili diyebiliriz. Regex sadece php de değil diğer programlama dillerinde de kullanılır. Kod yorumlayıcılarınında alt yapısını regex oluşturur. Regexi ne kadar iyi bilirseniz o kadar iyi iş yapabilirsiniz. Regex php de ise genellikle bot yapımında ve string manipule etmede kullanılır.

Regular Expression

Regex dediğimiz yapı metin içerisinde arama yapma, metine protokol uygulama, metin değiştirme veya bir metni yorumlamak amacıyla kullanılır. Örneğin web sitemizde bir üyelik formu olduğunu düşünelim. Buraya girilen e-posta adresinin e-posta kurallarına uyup uymadığını regex patterni ile kontrol edebiliriz. Aynı şekilde cep telefonu kontrolü yapmak veya link kontrolü yapmak gibi bir sürü yerde regex patterni kullanabiliriz.

Öncelikle regexin bilmemiz bazı kuralları var bu kurallardan başlayalım ve daha sonra örnekler yapalım.

Özel Karakterler

dHerhangi bir rakamı ifade eder
.Satır başı hariç herhangi bir karakteri ifade eder
wHerhangi bir harfi, rakamı veya alt tireyi ifade eder
sHerhangi bir görünmez karakteri ve boşluğu ifade eder. (Boşluk, tab, satır başı gibi)
^Başlangıcı ifade eder
$Sonu ifade eder
*Kendinden önce yazılmış karakterin;
sıfır veya daha fazla tekrar etmesini ifade eder
+Kendinden önce yazılmış karakterin;
bir veya daha fazla tekrar etmesini ifade eder
?Kendinden önce yazılmış karakterin;
olsa da olur olmasa da olurunu ifade eder
{123}Kendinden önce yazılmış karakterin;
parantez içerisine yazılan sayı kadar tekrar etmesini ifade eder
{1, 2}Kendinden önce yazılmış karakterin;
parantez içerisinde yazılan iki sayı arasında tekrar etmesini ifade eder
( … )Parantez içerisine yazılan ifadeleri gruplamaya yarar
( … | … )Parantez içerisine yazılan “|” dik tire işareti ya da anlamına gelir, içerisine yazılan ve dik tire ile ayrılan ifadelerden herhangi birisinin eşleşmesini ifade eder
[ … ]Köşeli parantez içerisine yazılan karakterlerden bir tanesini ifade eder
 \Kaçış karakteri. Yukarıda yazdığımız karakterleri normal olarak yazmak istediğimizde başına kaçış işaretini koyarız. Örneğin noktayı ifade etmek için .
DRakam olmayan herhangi bir karakteri ifade eder
SGörünmez ve boşluk olmayan karakteri ifade eder
WHarf, rakam veya alt tire olmayan karakteri ifade eder
bKelimenin başını veya sonunu ifade eder
[^ … ]Üç nokta yerine yazılan karakterler haricindeki karakterleri ifade eder. örn: [^abc] abc karakterleri  dışındaki herşey.
[a-z]A dan z’ye olan harflerden birisini ifade eder.

preg_match() & preg_match_all() Fonksiyonu

Php de regex ile işlem yaparken preg_match veya preg_match_all fonksiyonlarından birini kullanırız. Bu fonksiyonların birbirinden farkı preg_match bir kere işlem yaparken preg_match_all metnin sonuna kadar regex patternini çalıştırır.

preg_match($pattern,$metin,$dizi) birinci parametre regex patterni, ikinci parametre metin üçüncü parametre ise  regexte yakaladığı kısımları da atar.  Regexin çalışma durumuna göre geriye true veya false olarak değer döndürür.

preg_match_all($pattern,$metin,$dizi)  fonksiyonunun parametreleri de preg_match ile aynıdır.

 

Şimdi örneklerimize Geçelim.

  • Metin içerisinde kelime arama:

mobilhanem kelimesi var ise bize true değeri döndürmesi gerekiyor. kodu çalıştırdığınızda ekranda mobilhanem kelimesi mevcut yazacaktır.

  • metin içerisinde rakam var mı kontrolü yapmak.

  • Tarih formatı kontrol etmek.

 

Regex patternimizi açıklayacak olursak:

  1.  [0-9]{2}  iki tane yan yana rakam olsun dedik.
  2. \. nokta(.) regexe ait bir karakter olduğu için kaçış karakteri kullanarak noktayı regex olarak algılamayıp nokta işareti  olarak arama yapmasını sağladık.
  • Regex ile E-mail kontrolü yapmak.

Regex Patterni  ile yakaladığımız veriyi göstermek

Elimizde bir menü xml olduğunu varsayalım. bu xml içerisindeki itemleri nasıl alabileceğimizi preg_match ve preg_match_all ile görelim.

Ekran Çıktısı:

 

 

Ekran çıktısına bakacak olursak: preg_match() sadece ilk elemanı aldıktan sonra dururken preg_match_all() metin bitinceye kadar çalışıp tüm itemleri almaktadır.

İster regex patterninin tamamını istersekte sadece aradığımız kısmı alabilmemiz için diziye ikiside atılmıştır.

 

 

 

 

 

 

 

Php ile regex kullanımı dersimizin sonuna geldik arkadaşlar. Bir sonraki dersimizde görüşmek üzere 🙂

 

Regular Expression konusu ile  ilgili yorumlarınızı konu altından yapabilirsiniz, ayrıca sorularınızı yine konu altından ve Mobilhanem Soru&Cevap bölümünden sorabilirsiniz.

Tüm php dersleri için tıklayınız.

Yazar Hakkında

Erzurum Atatürk Üniversitesi Bilgisayar Mühendisliği Bölümü Öğrencisi Web & Android Developer #erzurum