PHP preg_match(): Normal İfadeler (Regex)
PHP'de Düzenli ifade nedir?
PHP Normal İfade regex olarak da bilinen, tek bir ifadede gerçekleştirilebilen güçlü bir desen eşleştirme algoritmasıdır. Düzenli ifadeler, karmaşık ifadeler oluşturmak için (+,-,^) gibi aritmetik operatörleri kullanır. E-posta adreslerini, IP adreslerini vb. doğrulama gibi görevleri gerçekleştirmenize yardımcı olabilirler.
Neden normal ifadeler kullanıyorsunuz?
- PHP Düzenli ifadeler, tek bir işlevi çağırarak dize verilerindeki kalıpları tanımlamayı basitleştirir. Bu bize kodlama süresinden tasarruf sağlar.
- E-posta adresi, alan adı, telefon numarası, IP adresi gibi kullanıcı girdilerini doğrularken,
- Arama sonuçlarında anahtar kelimeleri vurgulama
- Özel bir HTML şablonu oluştururken. PHP'deki Regex, şablon etiketlerini tanımlamak ve bunları gerçek verilerle değiştirmek için kullanılabilir.
PHP'de Yerleşik Düzenli İfade İşlevleri
PHP, bu PHP Düzenli İfadeler eğitiminde öğreneceğimiz normal işlevlerle çalışmamıza olanak tanıyan yerleşik işlevlere sahiptir. PHP'de yaygın olarak kullanılan düzenli ifade işlevlerine bakalım.
- PHP'de preg_match() – bu işlev PHP'de bir dize üzerinde kalıp eşleştirmesi gerçekleştirmek için kullanılır. Eşleşme bulunursa true, bulunmazsa false değeri döner.
- PHP'de preg_split() – bu işlev bir dizgede kalıp eşleşmesi gerçekleştirmek ve ardından sonuçları sayısal bir diziye bölmek için kullanılır
- PHP'de preg_replace() – bu işlev bir dizede kalıp eşleşmesi gerçekleştirmek ve ardından eşleşmeyi belirtilen metinle değiştirmek için kullanılır.
Aşağıda PHP preg_match(), PHP preg_split() veya PHP preg_replace() gibi normal ifade işlevlerinin sözdizimi verilmiştir.
<?php function_name('/pattern/',subject); ?>
İŞTE,
- “işlev_adı(…)” ya PHP preg_match(), PHP preg_split() ya da PHP preg_replace()'dir.
- “/…/” İleri eğik çizgiler PHP regex test aracı fonksiyonumuzun başlangıcını ve sonunu belirtir
- “'/pattern/'” eşleştirmemiz gereken kalıptır
- “konu” eşleştirilecek metin dizesidir
Şimdi yukarıdaki PHP normal ifade işlevlerini uygulayan pratik örneklere bakalım.
PHP'de Preg_match()
İlk örnek, belirli bir URL'deki guru sözcüğü için basit bir kalıp eşleşmesi gerçekleştirmek üzere PHP işlevindeki preg_match() işlevini kullanır.
Aşağıdaki kod, yukarıdaki örnek için preg_match() test cihazı işlevinin uygulanmasını gösterir.
<?php $my_url = "www.guru99.com"; if (preg_match("/guru/", $my_url)) { echo "the url $my_url contains guru"; } else { echo "the url $my_url does not contain guru"; } ?>
URL'ye göz atın http://localhost/phptuts/preg_match_simple.php
Kodun çıktımızdan sorumlu kısmını inceleyelim”preg_match('/guru/', $my_url)” İŞTE,
- “preg_match(…)” PHP regex işlevidir
- “'/guru/'” eşleştirilecek düzenli ifade modelidir
- “$my_url” eşleştirilecek metni içeren değişkendir.
Aşağıdaki diyagram yukarıdaki noktaları özetlemektedir
PHP Preg_split()
Şimdi PHP işlevinde preg_split() işlevini kullanan başka bir örneğe bakalım.
Bir dize ifadesini alıp onu bir diziye ayıracağız; eşleştirilecek desen tek bir boşluktur.
Bu örnekte kullanılacak metin dizesi “Normal İfadeleri Seviyorum”dur.
Aşağıdaki kod yukarıdaki örneğin uygulanmasını göstermektedir.
<?php $my_text="I Love Regular Expressions"; $my_array = preg_split("/ /", $my_text); print_r($my_array ); ?>
URL'ye göz atın http://localhost/phptuts/preg_split.php
PHP Preg_replace()
Şimdi içindeki preg_replace() fonksiyonuna bakalım. PHP işlevi bu, bir kalıp eşleşmesi gerçekleştirir ve ardından kalıbı başka bir şeyle değiştirir.
Aşağıdaki kod bir kelimede guru kelimesini arar. dizi.
Guru sözcüğünü, arka plan rengini vurgulayan CSS koduyla çevrelenmiş guru sözcüğüyle değiştirir.
<?php $text = "We at Guru99 strive to make quality education affordable to the masses. Guru99.com"; $text = preg_replace("/Guru/", '<span style="background:yellow">Guru</span>', $text); echo $text; ?>
Preg_replace.php dosyasını tarayıcınızda URL'ye kaydettiğinizi varsayarsak http://localhost/phptuts/preg_replace.php
Normal İfade Meta Karakterleri
Yukarıdaki örnekler çok temel kalıplar kullanmıştır; metakarakterler bize yalnızca bir e-posta adresinin geçerliliğini test etmek gibi daha karmaşık kalıp eşleşmeleri gerçekleştirme olanağı sağlar. Şimdi yaygın olarak kullanılan metakarakterlere bakalım.
Meta karakter | Açıklama | Örnek E-posta |
---|---|---|
. | Yeni satır dışında herhangi bir tek karakterle eşleşir | /./ tek karakterli her şeyle eşleşir |
^ | Başlangıcıyla veya dizeyle eşleşir / karakterleri hariç tutar | /^PH/, PH ile başlayan herhangi bir dizeyle eşleşir |
$ | Dizenin sonundaki desenle eşleşir | /com$/ guru99.com,yahoo.com vb. ile eşleşir. |
* | Sıfır (0) veya daha fazla karakterle eşleşir | /com*/ bilgisayar, iletişim vb. ile eşleşir. |
+ | Önceki karakterin/karakterlerin en az bir kez görünmesini gerektirir | /yah+oo/ yahoo ile eşleşir |
\ | Meta karakterlerden kaçmak için kullanılır | /yahoo+\.com/ noktayı gerçek bir değer olarak ele alır |
[...] | Karakter sınıfı | /[abc]/ abc ile eşleşir |
AZ | Küçük harflerle eşleşir | /az/ havalı, mutlu vb. ile eşleşir. |
AZ | Büyük harflerle eşleşir | /AZ/ NE, NASIL, NEDEN vb. ile eşleşir. |
0-9 | 0 ile 9 arasında herhangi bir sayıyla eşleşir | /0-4/ 0,1,2,3,4 ile eşleşir |
Yukarıdaki liste yalnızca normal ifadelerde en sık kullanılan meta karakterleri verir.
Şimdi bir e-posta adresinin geçerliliğini kontrol eden oldukça karmaşık bir örneğe bakalım.
<?php $my_email = "name@company.com"; if (preg_match("/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/", $my_email)) { echo "$my_email is a valid email address"; } else { echo "$my_email is NOT a valid email address"; } ?>
“[/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/] kalıbının açıklanması ”
İŞTE,
- “'/…/'” normal ifadeyi başlatır ve bitirir
- “^[a-zA-Z0-9._-]” herhangi bir küçük veya büyük harfle, 0 ile 9 arasındaki rakamlarla ve noktalarla, alt çizgilerle veya tirelerle eşleşir.
- “+@[a-zA-Z0-9-]”, @ sembolü ve ardından gelen küçük veya büyük harfler, 0 ile 9 arasındaki sayılar veya tirelerle eşleşir.
- “+\.[a-zA-Z.]{2,5}$/” ters eğik çizgiyi kullanarak noktadan çıkar ve ardından dizenin sonundaki 2 ile 5 arasında karakter uzunluğuna sahip tüm küçük veya büyük harflerle eşleşir.
URL'ye göz atın http://localhost/phptuts/preg_match.php
Yukarıdaki örnek dökümden de görebileceğiniz gibi, konu eşleştirme kalıpları olduğunda meta karakterler çok güçlüdür.
ÖZET
- PHP'deki Normal İfade veya Regex, bir kalıp eşleştirme algoritmasıdır
- Doğrulama kontrolleri gerçekleştirirken, etiketleri tanıyan HTML şablon sistemleri oluştururken vb. durumlarda normal ifadeler çok kullanışlıdır.
- PHP Düzenli ifadeleri destekleyen PHP preg_match(), PHP preg_split() ve PHP preg_replace() gibi yerleşik işlevlere sahiptir.
- Meta karakterler karmaşık desenler oluşturmamıza olanak tanır