PHP Düzenli ifadeler -5 preg_filter() Fonksiyon

Düzenli ifadeler, geliştiriciler için çok kullanışlı bir araçtır. Bir kelimeyi, karakteri veya herhangi bir diziyi bulmaya, tanımlamaya veya değiştirmeye izin verirler. Bu eğitim size PHP Düzenli ifadesinde nasıl ustalaşacağınızı öğretecek ve herhangi bir web geliştiricisinin araç setinde olması gereken son derece kullanışlı, kullanıma hazır PHP düzenli ifadelerini Konusunu gösterecektir.

preg_filter() fonksiyonu, düzenli ifade araması yapmak ve metni değiştirmek için kullanılan PHP'de yerleşik bir fonksiyondur.

Fonksiyonun "yalnızca eşleşme olan konuları döndürdüğünü" belirtir, yani verilen desenle eşleşen hiçbir öğe yoksa, boş (Null) bir dizi döndürülür. Bu fonksiyon bize if..else bloklarını kullanmamazı sağlar.

preg_filter() , yalnızca eşleşme olan konuları döndürmesi ile preg_replace() ile aynıdır. Bu fonksiyonun nasıl çalıştığıyla ilgili ayrıntılar için preg_replace() belgelerini okuyun.

Replace dizeleri \n veya $n biçiminde geri referanslar içerebilir; burada n , desendeki bir grubun dizinidir. Döndürülen dizede, \n ve $n örnekleri, grup tarafından veya \0 veya $0 kullanılıyorsa, ifadenin tamamı tarafından eşleşen alt dize ile değiştirilecektir.

Sözdizimi :

preg_filter(pattern, replacement, input, limit, count)

pattern: Gereklidir. Bu parametre, aranan bir dize öğesi içerir ve bir dize veya dize dizisi olabilir.

replacement: Değiştirilecek dizeleri veya dizileri belirten zorunlu parametredir.

input: Aranacak ve değiştirilecek dizeleri içeren dize veya dizi.

Limit: Bu parametre, her bir model için olası maksimum değiştirmeleri belirtir.

count: Yapılan değiştirme sayısını doldurmak için kullanılan isteğe bağlı parametredir.

ÖRNEK:


<?php
    $text = "Bugün hava kapalı bir gün. hava yağmurlu bir gün.";

    $pattern = "/hava/";

    $replace = "bulutlu";

    $result = preg_filter($pattern, $replace, $text);

    echo $result;
?>  

ÇIKTI:

Bugün bulutlu kapalı bir gün. bulutlu yağmurlu bir gün.

Yukarıda örnekte görüldüğü gibi hava kelimeleri "bulutlu" ile değişmiştir.

Not: preg_filter() sadece eşleşen konuları döndürmesi preg_replace() fonksiyonu gibidir. Farkı konu değiştirgesi bir dizi ise ve hiç eşleşme olmazsa veya bir hata oluşmuşsa boş bir dizi döner; aksi takdirde null döner. Bu da bize if...else ifadelerinde preg_filter() fonksiyonu kullanmamazı sağlar.

<?php
    $text = "Bugün hava kapalı bir gün. hava yağmurlu bir gün.";

    $pattern = "/toprak/";

    $replace = "bulutlu";

    $result = preg_filter($pattern, $replace, $text);

    if (!empty($result)) {
    	echo "<p>$result</p>";
    }else{
    	echo "Aranılan şartlar içerikte bulunmadı";
    }
?>  

Çoğu durumda bir tane değilde, birden fazla desenin değiştirilmesi istener o zaman Array kullanmamız gerekir.

Pattern değişkenimizde Array kullandıysak Değiştireceğimiz (replace) değişkenindede Array kullanmalıyız.


<?php
    $text = "css kolay bir dil. Bugün hava güzel.";

    $pattern = ["/css/","/kolay/","/güzel/","/\./"];

    $replace = ["php","sıkı","bulutlu","!"];

    $result = preg_replace($pattern, $replace, $text);

    echo $result;
?>  

ÇIKTI:

php sıkı bir dil! Bugün hava bulutlu!

Bir metin ile değilde, bir Array yapıda preg_filter() fonksiyonu kullanırsak.


<?php
    $content = [52, 52.37, 37.25, 55];

    $pattern = ["/5/"];

    $replace = ["9"];

    $result = preg_replace($pattern, $replace, $content);

    echo "<pre>";
    print_r($result);
    echo "</pre>";
?> 

ÇIKTI:

Array ( [0] => 92 [1] => 92.37 [2] => 37.29 [3] => 99 )

preg_filter(), fonksiyon n veya $n formunun başvurularını içerebilir ve ikinci form tercih edilen formdur. Bu tür her başvuru, n'inci parantezli desen tarafından yakalanan metinle değiştirilir. n=0 ile 99 arasında olabilir ve 0 veya $0 tüm desenle eşleşen metne başvurur. Yakalama alt ayrıştırıcısının sayısını elde etmek için açma parantezleri soldan sağa (1'den başlayarak) sayılır.

$1, $2... $n Düzenli ifadedeki değiştirmeler, parantez içine alınmış eşleşmelere yapılan referanslardır. Tüm eşleşme $0 olur, parantez içine alınmış ilk yakalama $1 olur, İkinci yakalama $2 olur, vb...


<?php
$string = 'April 15, 2003';
$pattern = '/(\w+) (\d+), (\d+)/i';

$replacement = 'Tarih: $0';

echo preg_filter($pattern, $replacement, $string);
?>

ÇIKTI:

Tarih: April 15, 2003

ÖRNEK 2:


<?php
$string = 'April 15, 2003';
$pattern = '/(\w+) (\d+), (\d+)/i';

$replacement =  '${1} 3, $3';

echo preg_filter($pattern, $replacement, $string);
?>

ÇIKTI:

April 3, 2003

ÖRNEK 3:


<?php
$subject = array('1', 'a', '2', 'b', '3', 'A', 'B', '4'); 
$pattern = array('/\d/', '/[a-z]/', '/[1a]/'); 
$replace = array('A:$0', 'B:$0', 'C:$0'); 

echo "<pre>";
print_r(preg_filter($pattern, $replace, $subject)); 
echo "</pre>";

echo "<pre>";
print_r(preg_replace($pattern, $replace, $subject)); 
echo "</pre>";
?>

ÇIKTI:

Array
(
    [0] => A:C:1
    [1] => B:C:a
    [2] => A:2
    [3] => B:b
    [4] => A:3
    [7] => A:4
)
Array
(
    [0] => A:C:1
    [1] => B:C:a
    [2] => A:2
    [3] => B:b
    [4] => A:3
    [5] => A
    [6] => B
    [7] => A:4
)

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.

8772

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.