PHP Düzenli ifadeler -2 preg_match() Fonksiyon
PHP programlama dilinin preg_match() fonksiyonu, desen için dizeyi arar ve ardından fonksiyon yalnızca desen varsa TRUE değerini döndürür veya preg_match()
fonksiyonu FALSE değerini döndürür. Preg_match()
fonksiyonu temel olarak, giriş veri/dize deseninin içindeki dize desenini aramada çok yararlı ve yararlı olan bazı parametreleri kullanarak çalışır. İlk parametre, aranacak dize kalıplarını(desen) verisi. İkinci parametre dize kalıplarını aramamız gereken metin. Üçüncü parametre eşleşen dize içeriğini bulur ve yalnızca preg_match()
fonksiyonundan sonra yazdırma dahil edilirse çıktıda gösterilir.
Sözdizimi:
pattern: Gereklidir. Ne aranacağını belirten Düzenli ifade içerir
input: Gereklidir. Aramanın gerçekleştirileceği dize
matches: İsteğe bağlı. Bu parametrede kullanılan değişken, bulunan tüm eşleşmeleri içeren bir dizi verisi oluşturacak.
flags: İsteğe bağlı. Eşleşme dizisinin yapılandırılma şeklini değiştiren seçenekler kümesi.
offset: İsteğe bağlı. Varsayılan değer 0'dır. Dizenin ne kadar içinde aramaya başlanacağını belirtir. Preg_match()
fonksiyonu, bu parametrede verilen konumdan önce gerçekleşen eşleşmeleri bulamaz.
Bir Kelime Aramak
Regex ile yapılabileğimiz en basit işlem kelime aramaktır, bunun için direkt aramak istediğimiz kelimeyi yazmak yeterli. Örnek olarak düzenli ifademize php
yazıyoruz. Ve elde edeceğimiz sonuçta php
kelimelerinin seçildiğini görebilirsiniz.
<?php
$str = "Web yazılımında öğrenilecek proğramlardan biri php dersidir.";
$pattern = "/php/";
preg_match($pattern, $str, $matches);
echo "<pre>";
print_r($matches);
echo "<pre>";
?>
ÇIKTI: Array olarak verir.
Array ( [0] => php )
Pekala örneğimizde Php Büyük harfler içerseydi.
<?php
$str = "Web yazılımında öğrenilecek proğramlardan biri Php dersidir.";
$pattern = "/php/";
preg_match($pattern, $str, $matches);
echo "<pre>";
print_r($matches);
echo "<pre>";
?>
ÇIKTI:
Array ( )
Regex, Küçük ve Büyük harfe duyarlıdır. Bayraklar(Flags) belirtmemiz gerekir. i harfiyle Eşleşmeyi büyük/küçük harf duyarlı olmayan bir şekilde yaparız.
/ php /i
Kodlarımız en son şu şekilde olur.
<?php
$str = "Web yazılımında öğrenilecek proğramlardan
biri Php dilidir.";
$pattern = "/php/i";
preg_match($pattern, $str, $matches);
echo "<pre>";
print_r($matches);
echo "<pre>";
?>
ÇIKTI:
Array ( [0] => Php )
Pekala örneğimizde iki tane php olsaydı ne olur.
<?php
$str = "Web yazılımında öğrenilecek proğramlardan biri php dersidir. php çok
kolay bir ders";
$pattern = "/php/i";
preg_match($pattern, $str, $matches);
echo "<pre>";
print_r($matches);
echo "<pre>";
?>
ÇIKTI:
Array ( [0] => Php )
preg_match()
fonksiyonu aranan deseni metinde bulduktan sonra çalışmayı sonlandırır. Tüm metinde arama yapmak için preg_match_all
fonksiyonu kullanılır.
<?php
$str = "Web yazılımında öğrenilecek proğramlardan
biri Php proğram dilidir. php çok kolay bir dildir";
$pattern = "/php/i";
preg_match_all($pattern, $str, $matches);
echo "<pre>";
print_r($matches);
echo "<pre>";
?>
ÇIKTI:
Array ( [0] => Array ( [0] => Php [1] => php ) )
preg_match()
Fonksiyonu Tüm desenleri değilde bir tane veri istediğinizde, örnek : email adresi preg_match()
Fonksiyonu kullanırsınız ama Tüm metinde uyuşan desenleri arama yapıyorsanız preg_match_all()
fonksiyonunu kullanırsınız.
Metin içinde aranılan ifade sayısını bulmak için Üçüncü paretmeyi girmeyin; Ayrıca True ve False değerlerini öğreneceğimizden if...else
blok yapılarında da kullanılır.
<?php
$str = "Web yazılımında öğrenilecek proğramlardan biri Php dersidir.
php çok kolay bir ders";
$pattern = "/php/i";
echo preg_match_all($pattern, $str);
?>
ÇIKTI:
Yukarda preg_match()
Fonksiyonu kullanılsaydı bir sonucu verirdi. if...else
bloğunda kullanalım.
<?php
$str = "Web yazılımında öğrenilecek proğramlardan
biri Php dilidir. php çok kolay bir dildir.";
$pattern = "/php/i";
if(preg_match($pattern, $str)){
echo "<h3>Aranan ifade bulundu.</h3>";
}else{
echo "<h3>Aranan ifade bulunamadı.</h3>";
}
?>
Yukarda ki kod bloğunda preg_match_all()
fonksiyonuda kullanabilirsiniz.
Basit Dizi Kontrolleri
Belirli içerik için dizeleri kontrol eden bazı sözdizimi örnekleri şunlardır: Temel eşleştirme
preg_match("/PHP/", "PHP")
# Bir hazır bilgi için eşleşme.
preg_match("/^PHP/", "PHP")
# Dizenin başlangıcındaki değişmez değeri eşleştir.
preg_match("/PHP$/", "PHP")
# Dizenin sonundaki değişmez değeri eşleştir.
preg_match("/^PHP$/", "PHP")
# Tam dize içeriği için eşleşme.
preg_match("/^$/", "")
# Boş dizeyi eşleştir
Farklı Düzenli ifade sınırlayıcıları kullanma
preg_match("/PHP/", "PHP")
# / yaygın olarak kullanılan sınırlayıcı olarak.
preg_match("@PHP@ ", "PHP")
# @ sınırlayıcı olarak.
preg_match("!PHP!", "PHP")
# ! sınırlayıcı olarak.
Sınırlayıcıyı değiştirmek bazı durumlarda faydalı olur
preg_match("/http:\/\//", "http://");
# http:// protokol önekini / sınırlayıcı ile eşleştirin
preg_match("#http://#", "http://")
# http:// protokol önekini # sınırlayıcı ile eşleştirin
Büyük küçük harf duyarlılığı
preg_match("/PHP/", "PHP")
# büyük/küçük harfe duyarlı dize eşleştirme
preg_match("/php/i", "PHP")
# büyük/küçük harfe duyarlı dize eşleştirme
Joker karakterlerle eşleştirme
preg_match("/PP/", "PHP")
# tek bir karakterle eşleşir.
preg_match("/P.*P/", "PHP")
# çoklu karakterleri eşleştir.
preg_match("/P[AZ]P/", "PHP")
# AZ karakter aralığından eşleşme.
preg_match("/[PH]*/", "PHP")
# P ve H karakter kümesinden eşleşme.
preg_match("/P\wP/", "PHP")
# bir kelime karakteriyle eşleşir.
preg_match("/\bPHP\b/", "PHP'de düzenli php ifade")
# "PHP" kelimesiyle eşleşir, ancak "php" ile eşleşmez
Sayaçlar Kullanma
Herhangi bir karakterin ne miktarda tekrarlanabileceğini belirten ifadelerdir.
- {n} -> kendinden önceki karakter
n
defa ardışık olmalıdır. - {n, m} -> kendinden önceki karakter
n ile m
aralığında ardışık olmalıdır. - {n,} -> kendinden önceki karakter en az
n
kadar ardışık olmalıdır.
ÖRNEK:
<?php
$text = " abbbc";
$desen ="/ab{3}c/";
preg_match_all($desen, $text, $result);
echo "<pre>";
print_r($result);
echo "<pre>";
?>
ÇIKTI:
Array ( [0] => Array ( [0] => abbbc ) )
ÖRNEK 2:
<?php
$text = "aabc or aaabc or aaaabc";
$desen ="/a{2,4}bc/";
preg_match_all($desen, $text, $result);
echo "<pre>";
print_r($result);
echo "<pre>";
?>
ÇIKTI:
Array ( [0] => Array ( [0] => aabc [1] => aaabc [2] => aaaabc ) )
ÖRNEK 3:
<?php
$text = "abccc or abccccccccc or
abccccccccccccccccccccc";
$desen ="/abc{3,}/";
preg_match_all($desen, $text, $result);
echo "<pre>";
print_r($result);
echo "<pre>";
?>
ÇIKTI:
Array ( [0] => Array ( [0] => abccc [1] => abccccccccc [2] => abccccccccccccccccccccc ) )
Elma, kelimesini bulalım; Ancak Elma kelimesinden önce 5 karakter ve arkasından da 1 tane rakam ve 2 karekter geliyor olsun. Bunun için regex yapmamız gerekir.
<?php
$text = "Bereketli meyve kilo fiyat 5tl Elma";
$desen ="/[a-z]{5} [0-9][a-z]{2} Elma/";
preg_match_all($desen, $text, $result);
echo "<pre>";
print_r($result);
echo "<pre>";
?>
ÇIKTI:
Diğer regex Konularin Linki
- HTML
- CSS
- PHP
- JQUERY
- PHOTOSHOP
- JavaScript
- Web Dünyası
- Linux
- MİTHRİL FRAMEWORK
- Laravel
- Git
- React
- HTML LİNK(Bağlantı)EKLEME - LİNK VERME
- HTML YAZI VE RESİM ORTALAMA
- HTML RESME LİNK VERME
- HTML FORM OLUŞTURMA
- CSS YATAY MENÜ YAPIMI
- HTML RESİM EKLEME
- CSS (BOYUT) GENİŞLİK VE YÜKSEKLİK (Width-Height)
- HTML DİV ve SPAN NEDİR?
- HTML ARKAPLANA MÜZİK EKLEME
- KALİTE KAYBETMEDEN RESİMLERİ BÜYÜTME