REGEX Nedir ? PHP ile Regex Nasıl Kullanılır ?

Regex, bir arama modeli oluşturan karakter dizisidir. Bir metinde veri aradığınızda, aradığınızı tanımlamak için bu arama modelini kullanabilirsiniz.

Normal bir ifade, tek bir karakter veya daha karmaşık bir kalıp olabilir.

Her türden metin arama ve metin değiştirme işlemlerini gerçekleştirmek için Regular Expressions (normal ifadeler) kullanılabilir.

Syntax – Sözdizimi

PHP’de normal ifadeler, sınırlayıcılardan, bir örüntüden ve isteğe bağlı değiştiricilerden oluşan dizelerdir.

$ornek = "/masterdark/i";

Yukarıdaki örnekte “/” karakteri sınırlayıcı görevindedir. Belirtecin sonunda ki “/” karakterinden sonra gelen “i” karakteri aranan dizenin büyük küçük harfe duyarlı hale gelmesi anlamını taşır.

Sınırlayıcı, harf, sayı, ters eğik çizgi veya boşluk olmayan herhangi bir karakter olabilir. En yaygın sınırlayıcı eğik çizgidir (/), ancak deseniniz eğik çizgi içerdiğinde # veya ~ gibi diğer sınırlayıcıları seçmek daha uygundur.

Regex Functions – Regex İşlevleri

PHP, normal ifadeleri kullanmanıza izin veren çeşitli işlevler sağlar. Preg_match (), preg_match_all () ve preg_replace () işlevleri en yaygın kullanılanlardan bazılarıdır:

FonksiyonlarGörevleri
preg_match()Eşleşme sağlanırsa geriye 1 , eşleşme sağlanmazsa geriye 0 döndürür.(return callback is 1 or 0)
preg_match_all()Desenin string içerisinde kaç kez bulunduğunu döndürür bu da 0 olabilir.
preg_replace()Desenin string içerisinde bulduğunda yeni string ile değiştirir, işlem sonunda değişen halini geri döndürür..

Preg_match() Kullanımı


Preg_match () işlevi, bir dizgenin desen eşleşmeleri içerip içermediğini döndürecektir.

<?php
$cumle = "Masterdark.net webin yeni yüzü";
$desen = "/masterdark/i";
echo preg_match($desen, $cumle); // Çıktı 1
?>

Cümlenin içerisinde masterdark sözcüğünün varlığını büyük harf küçük harf duyarlılığı ile kontrol edecektir. (i bayrağı büyük küçük harf duyarlılığını sağlar.)

Preg_match_all() Kullanımı

Preg_match_all() işlevi , bir metnin içerisinde desen eşleşmelerinin sayısını döndürecektir.

<?php
$cumle = "Ankara'ya bugün de kAr yağdı.";
$desen = "/ar/i";
echo preg_match_all($desen, $cumle); // Çıktı 2
?>

Preg_replace() Kullanımı


Preg_replace () işlevi, bir dizedeki örüntüdeki tüm eşleşmeleri başka bir dizeyle değiştirir.

<?php
$cumle = "Facebook bugün yeni üyelik rekorunu kırdı.";
$desen = "/facebook/i";
echo preg_replace($desen, "MasterDark.net", $cumle); // Çıktı "Masterdark.net bugün yeni üyelik rekorunu kırdı."
?>

Regex Değiştiriciler

Değiştiriciler, bir aramanın nasıl gerçekleştirileceğini değiştirebilir.

DeğiştiriciAçıklama
iBüyük / küçük harfe duyarlı olmayan bir arama gerçekleştirir

m
Çok satırlı bir arama gerçekleştirir (bir dizenin başlangıcını veya sonunu arayan desenler, her satırın başlangıcı veya sonuyla eşleşir)
uUTF-8 kodlu kalıpların doğru eşleşmesini sağlar

Regex Kalıpları

Parantezler, bir dizi karakter bulmak için kullanılır:

İfadeAçıklama
[abc]Parantezler arasındaki seçeneklerden bir karakter bulun
[^abc]Parantez içinde OLMAYAN herhangi bir karakteri bulun
[0-9]0 – 9 aralığında bir karakter bulun

Meta Karakterler

Metakarakterler, özel bir anlamı olan karakterlerdir:

Meta KarakterlerAçıklama
|| İle ayrılmış modellerden herhangi biri için bir eşleşme bulun olduğu gibi: kedi | köpek | balık
.Herhangi bir karakterin yalnızca bir örneğini bulun
^Bir dizenin başlangıcı olarak bir eşleşme bulur: ^ Merhaba
$Aşağıdaki gibi dizenin sonunda bir eşleşme bulur: Dünya $
\dBir rakam bul
\sBir boşluk bul
\bŞuna benzer bir kelimenin başında bir eşleşme bulun: \bDÜNYA veya şuna benzer bir kelimenin sonunda: DÜNYA\b
\uxxxXxxx onaltılık sayı(hexadecimal) ile belirtilen Unicode karakterini bulun

Niceleyiciler

Nicelik belirteciAçıklama
n+En az bir n içeren herhangi bir dizeyle eşleşir
n*N’nin sıfır veya daha fazla oluşumunu içeren herhangi bir dizeyle eşleşir
n?N’nin sıfır veya bir oluşumunu içeren herhangi bir dizeyle eşleşir
n{X}Bir X n dizisi içeren herhangi bir dizeyle eşleşir
n{X,Y}X’den Y n ‘ e kadar olan bir dizi içeren herhangi bir dizeyle eşleşir
n{X,}
En az Xn dizisi içeren herhangi bir dizeyle eşleşir
Not: İfadenizin özel karakterlerden birini araması gerekiyorsa, onlardan kaçınmak için ters eğik çizgi (\) kullanabilirsiniz. Örneğin, bir veya daha fazla soru işaretini aramak için aşağıdaki ifadeyi kullanabilirsiniz: $desen = '/\?+/';

Gruplama

Tüm modellere nicelik belirteçleri uygulamak için parantezleri () kullanabilirsiniz. Aynı zamanda eşleşme olarak kullanılacak modelin bölümlerini seçmek için de kullanılabilirler.

<?php
$cumle = "Saatler ve yelkovanlar.";
$desen = "/s(a){2}t/i";
echo preg_match($desen, $cumle); // Çıktı 1
?>

Örneklerle Regex

Bir ifadenin mail adresi olup olmadığını sorgulayan desen

if (preg_match("/[-0-9a-zA-Z.+_]+@[-0-9a-zA-Z.+_]+.[a-zA-Z]{2,4}/", $emailAddress)){
    //Email adresi geçerli
}else{
    //email adresi geçersiz
}

Bir ifadenin url olup olmadığını sorgulama

if(preg_match("/^((https|http)\:\/\/)?([a-z0-9A-Z]+\.[a-z0-9A-Z]+\.[a-z0-9A-Z]+\.[a-zA-Z]{2,4}|[a-z0-9A-Z]+\.[a-z0-9A-Z]+\.[a-zA-Z]{2,4}|[a-z0-9A-Z]+\.[a-zA-Z]{2,4})$/i", $url)){
  // geçerli url adresi
}

Boş ifade kontrolü

^\s*$

Telefon numarası doğrulama

^[\\(]\d{3}[\\)]\s\d{3}-\d{4}$

Kredi Kartı Doğrulama

// mastercard
^(?:5[1–5][0–9]{2}|222[1–9]|22[3–9][0–9]|2[3–6][0–9]{2}|27[01][0–9]|2720)[0–9]{12}$
// visacard
^4[0–9]{12}(?:[0–9]{3})?$
One Comment

Add a Comment

E-posta hesabınız yayımlanmayacak.