(PHP 4, PHP 5)
str_replace — Bir alt dizgenin bütün örneklerini yenisiyle değiştirir
konu dizgesi içindeki eski dizgelerinin her birini yeni dizgesiyle değiştirerek elde edilen dizi veya dizgeyi döndürür.
Kaprisli yer değiştirme kurallarına ihtiyacınız olmayacaksa (düzenli ifadeler gibi) ereg_replace() veya preg_replace() yerine daima bu işlevi kullanın.
Eğer eski ve yeni birer dizi ise str_replace() her diziden birer değer alıp bunları kullanarak konu dizgesinde arama ve yer değiştirme yapar. Eğer yeni dizisi eski dizisinden daha az değere sahipse eksik kalan yeni dizgelerin yerine boş dizgeler konur. Eğer eski bir dizi ve yeni bir dizge ise her eski dizgesinin yerine bu yeni dizgesi konur. Zıddı anlamlı değildir.
Eğer eski veya yeni bir dizi ise elemanları baştan sona doğru ele alınır.
Aranacak değer; çok sayıda değer belirtmek için dizi kullanılabilir.
Yeni değer; çok sayıda değer belirtmek için dizi kullanılabilir.
Bir dizge veya dizi belirtilebilir.
Eğer konu bir dizi ise, arama ve değiştirme her eleman için ayrı ayrı yapılır ve dönen değer de bir dizi olur.
Bilginize: Eğer belirtilirse, yer değiştirilen dizgelerin sayısı bu değiştirgede döndürülür.
Yer değiştirmeler yapılmış dizge veya diziyi döndürür.
Sürüm: | Açıklama |
---|---|
5.0.0 | sayı değiştirgesi eklendi. |
4.3.3 | İşlevin davranışı değişti. Eski sürümlerde bir hata vardı; eski ve yeni birer dizi olduğunda eski dizinin dahili göstericisi ilerletilmeksizin boş yeni indisleri atlanırdı. Bu sorun 4.3.3 sürümünde düzeltildi. Bu hatadan etkilenen betiklerde özgün davranışı taklit etmek için bu işlev çağrılmadan önce boş eski değerlerinin kaldırılması gerekir. |
4.0.5 | Değiştirgelerin çoğu artık birer dizi olabiliyor. |
Örnek 1 - Basit str_replace() örnekleri
<?php
// Sonuç: <body text='black'>
$bodytag = str_replace("%body%", "black", "<body text='%body%'>");
// Sonuç: Hll Wrld f PHP
$vowels = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");
$onlyconsonants = str_replace($vowels, "", "Hello World of PHP");
// Sonuç: You should eat pizza, beer, and ice cream every day
$phrase = "You should eat fruits, vegetables, and fiber every day.";
$healthy = array("fruits", "vegetables", "fiber");
$yummy = array("pizza", "beer", "ice cream");
$newphrase = str_replace($healthy, $yummy, $phrase);
// sağlanan: 2
$str = str_replace("ll", "", "good golly miss molly!", $count);
echo $count;
?>
Örnek 2 - str_replace()str_replace() ile ilgili olası sorunlar
<?php
// Yer değiştirme sırası
$str = "Line 1\nLine 2\rLine 3\r\nLine 4\n";
$order = array("\r\n", "\n", "\r");
$replace = '<br />';
// \r\n'ler önce değiştirilmeli ki tekrar değiştirilmesin
$newstr = str_replace($order, $replace, $str);
// F çıktılanır, çünkü A ile B, B ile C, ... yer değiştirir.
// Yer değiştirme soldan sağa doğru yapıldığından
// son olarak E ile F yer değiştirir.
$search = array('A', 'B', 'C', 'D', 'E');
$replace = array('B', 'C', 'D', 'E', 'F');
$subject = 'A';
echo str_replace($search, $replace, $subject);
// Çıktısı: apearpearle pear
// yukarda bahsedilen sebeple
$letters = array('a', 'p');
$fruit = array('apple', 'pear');
$text = 'a p';
$output = str_replace($letters, $fruit, $text);
echo $output;
?>
Bilginize: Bu işlev ikil dosyalarla çalışırken dosya içeriğini değiştirmez.
str_replace() yer değiştirmeyi soldan sağa doğru yaptığından, örneklerde de göreceğiniz gibi, çok sayıda yer değiştirme yapıldığında bir önceki değer tekrar değiştirilir.
Bilginize:
Bu işlev harf büyüklüğüne duyarlıdır. Harf büyüklüğüne duyarsız işlem yapmak istiyorsanız str_ireplace() işlevini kullanınız.