(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.
eski
Aranacak değer; çok sayıda değer belirtmek için dizi kullanılabilir.
yeni
Yeni değer; çok sayıda değer belirtmek için dizi kullanılabilir.
konu
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.
sayı
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.