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=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
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
Php
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
Preg_Replace
kusura bakmayın. denemeden atınca öyle oldu
w+ yerine \w+ yazılacak. özel karakterler \ ile belirtilmelidir.
...düzelttim.