Ofis Programları - Preg_match() Ve Regexpe

    Ofis Programları - Preg_match() Ve Regexpe

    Ofis Programları Preg_match() Ve Regexpepreg_match() Perl Uyumlu Düzenli Ifadeler (PCRE) fonksiyonlarindan biridir. Bu fonksiyon programciya
    metin isleme konusunda diger metin fonksiyonlarindan daha çok esneklik saglar.

    Preg_match() düzenli ifadeler kullanarak bir metin blogunu baska bir metnin içinde bulmak için
    kullanilir.

    Preg_match() 3 tane ifadeye ihtiyaç duyar. Bunlar
    1. Düzenli ifade (regex)
    2. Kaynak metin
    3. Bir dizi degisken

    Preg_match() sonuç olarak eslesen bir ifade varsa 1, eslesen bir ifade bulunamazsa 0 döndürür.

    PHP: if (preg_match( "/J.r/", $kaynak, $dizi))
    print $dizi[0]
    // Ekrana Jor yazdirir ?>

    Burada düzenli ifademiz "/J.r/" ve metin içerisinde önce J, onu takip eden herhangi bir (1)
    karakter (.) ve daha sonra bir r ariyor. Slash isaretleri ise (/) delimiter olarak adlandirilirlar
    ve düzenli ifademizin sinirlarini belirlerler. Bir diger örnek ile devam edelim.

    PHP: if ( preg_match( "/J.*n/", $kaynak, $dizi ) )
    print $dizi[0]
    // Ekrana Jordan yazdirir ?>

    Bu örnekte ise önce bir J, ardinda herhangi bir (1) karakter, ardindan herhangi bir oranda herhangi
    bir karakter ve son olarak da bir n ariyoruz metnimizin içinde. Bu durumda .* için "herhangi bir
    oranda herhangi bir karakter" diyebiliriz.

    Zaman zaman * yerine + kullanmak da tercih edilebilir. + "bir veya daha fazla karakter"
    manasindadir. + ve * arasindaki fark ise +'nın 0'ı da içermesidir.
    ".*" = >=1
    "+" = >=0

    Düzenli ifadeler için açgözlüdür denebilir. Çünkü düzenli ifadeler aramanin ilk ve son sonucu
    arasindaki her seyi bulmak isterler.

    PHP: If ( preg_match( "/s.*g/", $metin, $dizi) )
    Print $dizi[0];
    // Ekrana string strong big stung yazdirir ?>

    Eger sadece ilk bulunan ifadeyi istiyorsak bir ? eklememiz gerekir.

    PHP: If ( preg_match( "/s.*?g/", $metin, $dizi) )
    Print $dizi[0];
    // Ekrana string yazdirir ?>

    Bir metin içerisinde bizim kriterlerimize uygun olan tüm degerleri bir dizi içine atmak istersek
    preg_match_all() fonksiyonunu kullanmamiz gerekir.

    PHP: If ( preg_match_all( "/s.*?g/", $metin, $dizi) )
    Echo "

    "; Print var_dump($dizi); Echo "";

    /* Ekrana
    array(1) {
    [0]=>
    array(3) {
    [0]=>
    string(6) "string"
    [1]=>
    string(6) "strong"
    [2]=>
    string(5) "stung"
    }
    }
    Yazdirir */ ?>


    Ayrica düzenli ifadeler içinde verilerin türlerini ifade eden karakterler kullanarak belirli
    karakterleri arayabiliriz.

    PHP: If ( preg_match("/d*-d*-d*/", $metin, $dizi))
    Print $dizi[0];
    //Ekrana 06-01-05 yazdirir ?>


    Burada aramada d ondalik rakami ifade eder. Düzenli ifadelerle arama yaparken kullanilabilen veri
    türleri ve içerdikleri degerler asagidaki listede gösterilmistir.

    Ifade Tür Içerigi
    d Ondalik Sayi [0-9]
    D Ondalik olmayan herhangi bir karakter [^0-9]
    s Bosluk karakter [ f]
    S Bosluk karakteri disindaki herhangi bir karakter [^ f]
    w "word" karakter [a-zA-Z0-9_]
    W "non-word" karakter [^a-zA-Z0-9_]

[ Geri ] - [ Ana Sayfa ] - Bookmark and Share


travesti