Regular expression


Zaman:20-03-2018 04:24

Regular Expression

Regular Expression php ile arama ve değiştirme işlemlerinde kullanılan özel bir sistemdir. Bunu farklı ortamlardaki * karakterine benzetebilirsiniz. adını bilmediğimiz bir kelimenin yerine * koyarak aram yapabiliriz.

Örneğin windows ile bir dosya ararken *.doc dediğinizde windows size uzantısı DOC olan tüm dosyaları gösterecektir. buradaki * karakteri bilinmeyen isim anlamına gelmektedir. işte regular expression (kısaca regex) tam olarak buna benzer bir işlem yapmaktadır. yine benzetmeden yola çıkarak devam etmek gerekirse regex ile kullanılan bilinmeyen kel... Devam?


ereg_replace

Ereg replace fonksiyonu yazı içersinde bir kelimeyi bulup değiştirmeye yarar. Verilen parametrelere göre aynı anda birçok değişiklik yapabilir.

Ereg replace ile birlikte paramatre olarak kullanılan Regex (Regular Expression) kendi başına büyük bir sistemdir. ve birçok uygulamada karşınıza çıkabilir.

Dikkat: Php 4 sonrasında bu fonksiyon yerine daha hızlı olan Preg_replace kullanılmaya başlamıştır.

 

Ereg replace için örnek:

$metin= ereg_replace("aranacak","yenisi", $metin );

 

Ereg replace ile Regex örneği:<... Devam?


Preg_Replace

Php Preg Replace

Özel karakter kullanarak arama yapmayı sağlayan bir fonksiyondur. Örnek vermek gerekirse Windows ortamında F3 tuşu ile bir dosya ararken "Makale.doc" yazdığınızda bulamadınız diyelim. O zaman arama kutusuna *.doc yazarsanız adı ne olursa olsun dosya tipi Word dosyası olan tüm herşeyi bulmuş olursunuz. Preg Replace komutu da bir yazı içersinde arama yapar ve bu mantıkla çalışır.

 

örnek: Diyelim ki bir yazıdaki şeftali,şefkat,şefik şeklindeki tüm kelimeleri armut olarak değiştirmek istiyoruz. bu durumda hepsindeki orta... Devam?


Mysql ile Regex kullanımı

Mysql içersinde kullanılan Regex komutları birçok standart parametreyi kabul eder.

Örnek olarak: Diyelim ki sitenizdeki bazı üyeler isminin olması gereken yere yanlışlıkla telefon numarasını yazmış. Bu durumda sayı ile başlayan kayıtları listelemek yeterli olacaktır. Regex sayesinde bunu tek satırda yapmak mümkün

SELECT * FROM tablo WHERE isim REGEXP ´^[0-9]´

Başka bir örnek: Adının başında abd veya apd olan üyeleri listeleyelim.

SELECT * FROM tablo WHERE isim REGEXP ´^(apd|abd)´ ORDER BY numara Regex hakkında detay için şuraya ... Devam?

Preg_Match_All

Bir yazı içinde regular expression kullanarak kelime aramaya yarar.

Örneğin: Bir internet sitesindeki tüm linkleri almak istiyoruz diyelim. bu durumda aşağıdaki gibi bir kod kullanabilirsiniz:preg match All kullanmadan önce file_get_contents ile web sayfasını okutuyoruz.

 

$sayfa=file_get_contents("http://www.phpkodlari.com/php");preg_match_all("/href=\"([^\"]+)/i",$sayfa,$matches);        foreach ($matches[0] as $tek) {    echo $tek ."<br>";}

Sonuç:

href="http://www.phpkodlari.com/php/urlencodehref="http://www.phpkodlari.com/php/href=... Devam?


Preg_Replace modifier listesi

Preg_Replace komutu kullanılırken son kısma eklenen bazı parametreler ek özellikler kazandırır. örneğin "i" karakteri büykü ve küçük harfleri önemsemeden işlem yapmasını sağlar.

 

örnek:yazıda geçen tüm Ali isimlerini Veli yapar. aLi şeklinde yazılsa bile işlem çalışır.

$yazi= preg_replace('/Ali/i','Veli', $yazi);

i: küçük ve büyük harflerde arar

m : Yazıdaki enter karakterlerini yok sayar yazı dümdüz gidyormuş gibi çalışır. Eğer kullanılan arama kelimesinde ^ ve $  kullanılmazsa işe yaramaz.

s: aramada kul... Devam?


preg_match parametreleri

Preg match ve preg replace gibi konutlarla kullanılan parametrelerin toplu listesi. kendim hazırladım. bizde (ç)alıntı yok

 

Özel sıra\w  harfler (a-z 0-9 _)\W  harf olamayanlar\s  Boşluk ve tab\S boşluk olmayan herşey\d  Sayılar (0-9)\D  Sayı olmayanlar.   yeni satır hariç herşeySınırlar^  Satır başı$  satır sonu[  grup karakter başı]  grup karakter sonu|  veya(  alt cümle başı)  alt cümle sonu\  özel karakter iptalSayıcılarn*  sıfır veya sonsuzn+  en az bir tane ve sonsuzn?  sıfır veya 1 karakter{n}  n sayıda karakter{n... Devam?


preg_replace_callback() hatası

Uzun zamandır sorunsuz kullandığım bir sistemde hata almaya başladım. Aldığım hata: Warning: preg_replace_callback() [function.preg-replace-callback]: Compilation failed: regular expression is too large at offset 31941 in detay.php on line 112 Bu arada etiketleri veritabanından getiriyorum. Sayfadaki kodlar: 112. satır kalın satır $etiketanahtar = array_map("preg_quote", array_keys($etiketler)); $icerik = preg_replace_callback("/(".implode('|', $etiketanahtar).")/", function($eslesmeler) use($etiketler) { return ''.$eslesmeler[1].''; }, $haber_detay); echo $icerik;... Devam?

phpkodlari.com © 2009 Herkes Php öğrenecek
Eglence ve Oyun: Gamikro