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 ortak kelime olan şef kısmını kullanarak yukarıdaki örneğe benzer şekilde şef* yazmamız gerekiyor. Tabii preg_replace ile * karakteri başka anlama geldiğinden onu kullanamayız.

$yazi="Bugün php öğrenmek için şefik arkadaşımdan yardım istedim bana şeftali gibidir, ilk dokunduğunda dışındaki tüyler içini kaldırır ama tadına bakınca vazgeçemezsin dedi";

$yazi=preg_replace("/şef\w+/i","Armut",$yazi);


echo $yazi;

Yukarıda kırmızı ile gösteridğim bölüm bizim için en önemli kısmı oluşturuyor. çünkü windowstaki * karakterinin farklı çeşitleri yoktur ama preg_replace içersinde Regular expression adı verilen birçok özel karakter vardır.

Windows olsaydı şef* yazılacak yazı yerine burada kullanmamız gereken şef\w+ karakteridir.

w : herhangi bir harf demektir.

+ : ise bu harfin devamında yine harf geldiğini gösterir.

preg_replace ile birlikte /i kullanılırsa küçük ve büyük harfleri içerir.

Regular expresison(regex) hakkında daha fazla detay için şuraya bakın: Regex

Her programcı birgün Php yi tadacaktır
2009-11-12 11:34:12 Edit:2010-10-16 16:57:25

theSinanSinan AY

yukardaki konuyu anlamadım

daha dogrusu bir sorun var

kodu aynen alıp yapıştırdım

ama değiştirme yapmadı $yazi aynısını ekrana çıktı veriyor

yani şeftali,şefkat,şefik armutla değiştirmiyor neden olabilir ben nerde yanlış yapıyorum

2010-09-17 12:58:04

Php

theSinanSinan AY

hocam affına sığınaraktan

sanırım kodda gözden kaçan bir şeyler var var

bu
$yazi=preg_replace("/şef[^ ]+/i","Armut",$yazi);
yada
$yazi=preg_replace("/şef[a-z]+/i","Armut",$yazi);

değişikik yapar

2010-10-15 19:02:40

Preg_Replace

smiley kusura bakmayın. denemeden atınca öyle oldu

w+ yerine \w+ yazılacak. özel karakterler \ ile belirtilmelidir.

...düzelttim.

Her programcı birgün Php yi tadacaktır
2010-10-16 16:58:12

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