Str_replace Kullanımı ve Alternatifleri
Str_replace php ile yazılım yaparken sıkça kullanımına başvurduğumuz bir arama ve değiştirme fonksiyonudur.
Fonksiyonun bir diğer özelliği de verdiğiniz dizede aradığınız öbeğin kaç kere kullanıldığını hesaplatmaktır. İsterseniz array ile, isterseniz de tek harf veya kelime ile kullanabilirsiniz.
Str_replace() fonksiyonu 4 bölümden oluşur.
<?php
str_replace("aranacak kelime","yerine ne yazılacak","hangi dizede","kaç adet");
?>
Yukarıdaki örnek olarak gösterilen kodun en sonundaki kaç adet kısmını, kaç tane öğe bulunmasını istemiyorsanız kullanmayabilirsiniz. İlk üç bölümü kullanabilirsiniz.
Örnek olarak bir cümledeki “siyah” yazılarını “beyaz” yapalım.
<?php
$cumle = "Yolda siyah bir araç ilerliyordu";
$sonuc = str_replace("siyah","beyaz",$cumle);
echo $sonuc;
// Sonuç
// Yolda beyaz bir araç ilerliyordu
?>
Bu fonksiyonu örnek olarak bir SMS programında kullanabilirsiniz. Müşteriden aldığınız mesajların arasındaki boşlukları değiştirmezseniz hata verecektir. Ancak boşlukları “%20” ile değiştirseniz mesajınız gönderilecektir.
Not: Bu her SMS programında olmayabilir. Genel bir örnek verme açısından yazıyorum.
O zaman aşağıdaki örnek bunu sağlayacaktır.
<?php
//Gelen mesajı POST ile alıyoruz. Mesaj örnek olarak "Merhaba Dünya" olsun
$gelen_mesaj = $_POST['gelen_mesaj'];
//Mesajdaki boşluk yerine %20 yazdırmak istiyoruz.
$mesaj_donustur = str_replace(" ","%20",$gelen_mesaj);
//Sonuç
//Merhaba%20Dünya
?>
Str_replace array ile kullanımı
Bir cümlede birden çok değiştirmek istediğimiz değişkenler var ise değiştirmek istediklerimizi array kullanarak çoğaltabiliriz.
Bunu istersek her değere değiştirmek istediğimizi yazarak istersek birden çok değişkenin tek bir kelimeye dönüşmesini sağlayarak yapabiliriz.
<?php
//Değiştirmek istediğimiz cümlemiz
$cumle = "Her gün meyve ve sebze yemelisin.";
$ara = array("meyve","sebze");
$degistir = array("pizza","hamburger");
$yenicumle = str_replace($ara,$degistir,$cumle);
echo $yenicumle;
//Sonuç
//Her gün pizza ve hamburger yemelisin.
?>
Eğer yukarıda ikinci değişkeni $degistir array bölümünü yaratmasaydık oraya tek bir kelime, harf vs. yazsaydık o zaman meyve ve sebze yerine o kelimeyi yazacaktır. Her zaman kullandığınız array bölümleri için karşılığını yazmanıza gerek yoktur.
Örnekte bulunan aynı cümleyi ele alırsak ve cümlede kaç adet e harfi geçtiğini saydırmak istersek ne yapmalıyız? O zaman da fonksiyonun son bölümü yani dördüncü değişkeni devreye girer.
<?php
$ornek = "Her gün sebze ve meyve yiyelim";
$say = str_replace("e","",$ornek,$kacadet);
echo $kacadet;
//Sonuç bize 7 olarak gözükecektir.
?>
Son örneğimizde kullandığımız “kacadet” değişkeni, kaç tane e yerine boşluk yazdığımızı saymıştır. Bu da bize yedi cevabını verir.
Dikkat edilmesi gerekenler
Karşılaşılan hatalardan biri de bu fonksiyonu kullanırken iki array kullandığımızda birbiri ile tam değiştirmediğidir. Bu genellikle str_replace() fonksiyonun değişiklikleri sırayla yapmasından ortaya çıkar. Her array de bulunan değişkenleri tek tek cümlenin başından sonuna doğru değiştirir.
Birden fazla harf değişikliği yapıyorsanız eğer ilk değiştirilen bir harfi tekrar değiştirebilir.
Aynı anda değişiklik yapmak isterseniz strtr() fonksiyonunu kullanabilirsiniz.
İkisi için de bir örnek verelim.
<?php
$cumle = "Doruk Karaboncuk";
$ara = array("a","b","c");
$degistir = array("c","f","g");
$sonuc = str_replace($ara,$degistir,$cumle);
?>
Beklenilen sonuç “Doruk Kcrcfonguk” olması gerekiyor. Yani a harflerini c, b harflerini f ve c harflarini de g yap dedik.
Yukarıda bulunan sonuç değişkenini str_replace ile yazdırdığımızda adım adım neler olduğuna bakalım.
Önce a harflerini bul ve c harfine çevir komutu geldi. Şu an sonuç “Doruk Kcrcboncuk”.
Daha sonra ikinci dizeye geçtiğinde b harflerini f harfine çevir komutu ile sonuç bu sefer “Doruk Kcrcfoncuk” oldu.
Son olarak c harflerini g harfine çevir geldi. Bu şekilde sonuç “Doruk Kgrgboncguk” olarak gösterilecektir. Bizim yukarıda beklediğimizden biraz farklı.
Aynı değişkenleri strtr() fonksiyonu ile tek array içerisinde yapalım.
<?php
$cumle = "Doruk Karaboncuk";
$degistir = array(
"a" => "c",
"b" => "f",
"c" => "g"
);
$sonuc = strtr($cumle,$degistir);
?>
Bu fonksiyonda dikkat etmeniz gereken aranılan cümlenin başta yazılması ve aratılan dizenin sonda yazılmasıdır.
str_replace fonksiyonun detaylarını PHP’nin kendi sayfasında görmek için bu sayfayı ziyaret edebilirsiniz.
Bu tarz fonksiyonlar sık sık kullanılırlar. Kullandıkça alışmanız daha hızlı olacaktır. Öğrenmenin en kolay yolu sürekli olarak pratik yapmaktır. Aklınızda kalan sorular için yorum yapabilir, başkalarının da faydalanacağını düşünüyorsanız paylaşabilirsiniz.
Congratulations @dkaraboncuk! You have received a personal award!
1 Year on Steemit
Click on the badge to view your Board of Honor.
Do not miss the last post from @steemitboard:
Congratulations @dkaraboncuk! You received a personal award!
You can view your badges on your Steem Board and compare to others on the Steem Ranking
Vote for @Steemitboard as a witness to get one more award and increased upvotes!