
Metin işleme komutlarından str_replace fonksiyonunu bu dersimizde inceleyeceğiz. İlk başta php.net ten ilgili fonksiyonunun kullanımını anlatan sayfasına erişiyorum. Str_replace fonksiyonu bir metin içerisinde belirli metinleri bulup onları başka bir metinle değiştirmeye yarayan bir fonksiyondur.
Bu değiştirme işleminde str_replace ile dizi istediğimiz değiştirmeleri gerçekleştirebiliriz. Fonksiyonun kullanımına bakarsak aranan bütün metin ifadeleri bulup değiştirilecek yeni ifadelerle değiştirir. Kullanımında ilk parametrede aranan ifadeleri ikinci parametrede değiştirilecek ifadeleri yani bulunduğunda yerine yazılacak ifadeleri ve üçüncü parametrede hangi metin üzerinde işlem yapılacağını veriyoruz.
Son parametre ise toplamda kaç adet değiştirilme yapıldığını bize söyleyen bir parametredir. Şimdi bu komutun kullanımına sırasıyla bakalım. Metin.php adında bir dosya oluşturuyorum. Bu php dosyası içerisinde php taglarını açıp kapattıktan sonra. metin şeklinde bir ifadeyi tanımlıyorum.
$metin = "Ahmet ve Mehmet Veli ile karşılaştılar, Veli üzgündü";
Bu ifademizin üzerinde değiştirme yapmak için str_replace dedikten sonra mesela tüm Veli ifadelerini Kerem şeklinde değiştirmek istiyorsak
str_replace("Veli","Kerem",$metin);
bu şekilde fonksiyonumuzu kullanabiliriz. İlk başta echo $metin diyerek
<?php
$metin = "Ahmet ve Mehmet Veli ile karşılaştılar, Veli üzgündü";
echo $metin;
//echo str_replace("Veli","Kerem",$metin);
?>
sayfamızı çağıralım ve sonucunu görelim. Sayfamı çağırdığımda metin ifademin olduğu gibi yazdırıldığını görüyorum.
Ahmet ve Mehmet Veli ile karşılaştılar, Veli üzgündü
Daha sonra normal yazdırmayı iptal edip Değiştirme işlemini yapıp yazdıralım.
<?php
$metin = "Ahmet ve Mehmet Veli ile karşılaştılar, Veli üzgündü";
$metin = str_replace("Veli","Kerem",$metin);
$metin = str_replace("üzgündü","mutluydu",$metin);
echo $metin;
?>
Ahmet ve Mehmet Kerem ile karşılaştılar, Kerem üzgündü
Gördüğümüz gibi Veli yazan ifadeler Kerem e dönüştü İşte burdaki gibi dönüştürme işlemini gerçekleştirebiliriz.Metin ifademizi değiştirme işlemi yaptıktan sonra tekrar kendisine atıyalım. Ve tekrar değiştirme işlemi yapıp kendine atadıktan sonra ifademizi yazdıralım. Sayfayı çağırdığımda hem ilk verdiğim ifadenin hemde daha sonra ikinci replace işleminde üzgündü ifadesinin mutluydu olarak değiştiğini görüyorum. İşte bu şekilde ardarda yazarak değiştirme işlemini yapabiliriz. Şu blogumuzu şimdilik kapatıp son parametremizi inceleyelim.
<?php
$metin = "Ahmet ve Mehmet Veli ile karşılaştılar, Veli üzgündü";
$metin = str_replace("Veli","Kerem",$metin,$adet);
echo $adet;
/*
$metin = str_replace("üzgündü","mutluydu",$metin);
echo $metin;
*/
?>
Son parametre bir değişken olacak şekilde verildiğinde Bu değişkenin içine kaç kere değiştirilme yapıldığı değeri atanır. ve artık o değere sahiptir.İlk replace işleminde iki kere değiştirilme yapıldığını hatırlarsak iki adet değiştirme olduğunu zaten görüyorum.
Bu şekilde birden fazla replace işleminide ilk seçenek olarak fonksiyonu ardarda çağırarak yapabilirim.
<?php
$metin = "Ahmet ve Mehmet Veli ile karşılaştılar, Veli üzgündü";
// $metin = str_replace("Veli","Kerem",$metin,$adet);
// echo $adet;
$metin = str_replace("Veli","Kerem",$metin);
$metin = str_replace("üzgündü","mutluydu",$metin);
echo $metin;
?>
Bunu yaptığımda sorunsuz çalışır.Yalnız str_replace bize farklı bir opsiyon daha sağlar Bu şekilde bir çok metni ardarda replace etmek yerine Bulunacak metinleri tanımlayıp Daha sonrada değiştirilecek metinleri tanımlayıp Bu şekildede işlem yapabilirim İşte bu iki satırımı iptal ettikten sonra replace işlemimi direk bul ve değiştir dediğim dizileri kullanarak yaparsam aynı sonucu rahatlıkla alabilirim.
<?php
$metin = "Ahmet ve Mehmet Veli ile karşılaştılar, Veli üzgündü";
// echo $metin;
// $metin = str_replace("Veli","Kerem",$metin,$adet);
// echo $adet;
/*
$metin = str_replace("Veli","Kerem",$metin);
$metin = str_replace("üzgündü","mutluydu",$metin);
*/
$bul[] ="Veli";
$degistir[] ="Kerem";
$bul[] ="üzgündü";
$degistir[] ="mutluydu";
$metin = str_replace("$bul,$degistir,$metin);
echo $metin;
?>
Ahmet ve Mehmet Kerem ile karşılaştılar, Kerem mutluydu
İki bul ve değiştiri dizi olarak verebileceğim gibi bu ifadeleri temizlemek istiyorsam yani metin içerisinden çıkarmak istiyorsam değiştirilecek metni sıfır karakter olarakta verebilirim. Sayfayı yenilediğimde bulunan ifadeler dizi olarak değilde Olmayan metin yani boş bir metin karakteri olarak değiştirilmiş olur
<?php
$metin = "Ahmet ve Mehmet Veli ile karşılaştılar, Veli üzgündü";
// echo $metin;
// $metin = str_replace("Veli","Kerem",$metin,$adet);
// echo $adet;
/*
$metin = str_replace("Veli","Kerem",$metin);
$metin = str_replace("üzgündü","mutluydu",$metin);
*/
$bul[] ="Veli";
$degistir[] ="Kerem";
$bul[] ="üzgündü";
$degistir[] ="mutluydu";
// $metin = str_replace("$bul,$degistir,$metin);
$metin = str_replace("$bul,"",$metin);
echo $metin;
?>
Bu kullanımda mevcuttur. Burdaki buluncak ve değiştirilecek ifadeleri tanımlayarak böylelikle çok basit bir şekilde bulma ve değiştirme işlemlerini rahatlıkla gerçekleştirebilirim