Düzenli İfadeler ve Karakter Katarları

Karakter Katarları ve Fonksiyonlar2 de “Bundan sonraki karakter işleme fonksiyonlarımızda Düzenli deyimler kullanacağımız için onları Düzenli deyimler başlığında ele almak gerekir…” demiştim…

Düzenli ifadeler(Regular Expressions)

Düzenli ifadeler karakter katarlarında hem belirli bir karakter katarını, hem ifade hemde ayraçları birlikde değerlendirmemizi sağlar. Kısaca aradğımız ifadeler, ya da kontrol edeceğimiz sıra-diziliş gibi işlemlerde bize yardımcı olur…

Daha önce örneğin str_replace ile bir içerikde herhangi belirttiğimiz bir karakter ya da ifadeyi buluyorduk. Şimdi ise hem ifadeleri bulabilecek, hemde diziliş ve sıralanış ve hem de belirlediğimiz anahtar, ayraçlarla belirli bir aralıkda kalan veriyi elde edeceğiz. Örneğin bir resimin sadece src içeriğini alabiliriz, girilen bir verinin uygunluğunu kontrol edebiliriz…

Jokerler

. Nokta kullanmak

Önreğin “pas, tas, has” kelimelerimiz olsun ve biz içinde sadece “as” geçen bir sıralama kontrolüyle başlayacağız.

O halde sorgu ifademiz .as biçiminde olacaktır. Noktanın bulunduğu karakter ne olursa olsun, sonrasındaki “as” karakterini yakalamış oluruz. (tabi bir joker daha kullanırız, .*)

* kullanmak. Sıfır veya daha fazla kez tekrarla, yani opsiyonlu..

+ kullanmak. En az bir kez tekrarla.. yani aranan karakter deyimde en az bir kez geçmeli-olmalı..

^ kullanmak. Bu ise, eşleştirmenin başlangıcını belirtir. örneğin 2 kelimemiz olsun ve biz birebir karşılaşmasını istemiş olalım. “kat”, “fakat” eğer biz jokeri, /^kat/ olarak belirlersek, fakat kelimesi esas alınmayacaktır.. Sonuç “kat” olacaktır..

Kelimeler “Kat” ve “fakat” olsun, bu durumda boş dönecektir, çünkü Kat kelimesinde hem büyük, hemde küçük harf var. Bu durumda “/^kat+/i” ifademizi bu biçimde kullanabiliriz. En sona eklediğimiz “i”,  düzenli ifademizin büyük, küçük harfe duyarsız olmasını sağladı. Sonuç “Kat”.

Peki kelime “fakat kat” olsa sonuç ne olurdu… Boş olurdu, çünkü deyimimizin kat ile başlaması gerektiğini ^ belirttik..

Peki ^ karakterini parantezin içine atsak ne olurdu? “/[^kat]+/i” Sonuç: “f”…

“/.*kat+/i” Sonuç: “Kat fakat” çünkü başa .* koyduk yani artık içinde tüm kat geçen kelimelerde eşleşecek…

Bu başlık da yazıda ilk resmi bulmuştuk.

preg_match('@<img.+src="(.*)".*>@Uims', $icerik, $matches);
if ( $img_kontrol ) echo $matches[1]; // resim yolu

Kontrol ettiğimiz içerikde, <img tagı ile başlayan ve  “+” src=”(.*)” arasında kalan (.*) karakter ne olursa olsun resim yolunu alıyorduk… İşte bunu kullandığımız düzenli ifade sağladı… Burada .* jokerini kullandık yani, harf, rakam ve özel karakter, ne olursa olsun içerik alınmış oluyor…

Email kontrolü yapalım.

if (preg_match(“/^[a-zA-Z0-9_\-\.]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/”, “benim_email@email.com”))
echo “Geçerli.”;
else
echo “Mail adresi geçersiz.”;

\ backslash  kaçış karakteridir. Örneğin tire ve nokta işaretinin başında kullandık. Yani bir joker değil, bir karakter olarak algılanmasını sağladık.

Önce, büyük, küçük harf ya da rakam, ya da alt çizgi, tire içerebilir ve devamında @ işareti olmalı, sonrası ise harf ya da rakam ya da tire içerebilir ve devamında nokta(.) sonrasıda harf ya da rakam ya da nokta(com.tr örneğin) olabilir. Eğer veri eşleştirmeye uygun ise gerekli işlem, değilse gerekli işlem(uyarı olabilir) yapılabilir. Örneğin mail adresi şu biçimde girilmiş olsa idi, benim_email@email, ya da benim+email<@email.com eşleşme gerçekleşmeyecekti..
Devamı burada…

1 Yorum

  1. Geri izleme: Düzenli İfadeler ve Karakter Fonksiyonları | VebLebi

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir