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:

preg_match(pattern, input, matches, flags, offset)

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:

2

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.

Ö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:

Array ( [0] => Array ( [0] => fiyat 5tl Elma ) )

Diğer regex Konularin Linki

Lütfen konu haricinde soru sormayın cevaplanmayacaktır. Yorumunuz onaylandıktan sonra yayınlanacaktır. Lütfen Yukarıda ki mesajları okuyun tekrar aynı soruları sormayın.

5211

KATEGORİ
  • HTML
  • CSS
  • PHP
  • JQUERY
  • PHOTOSHOP
  • JavaScript
  • Web Dünyası
  • Linux
  • MİTHRİL FRAMEWORK
  • Laravel
  • Git
  • React
POPÜLER MAKALE
  • 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
ETİKET
WEBCEBİR © 2013 Tüm hakları saklıdır.