(PHP 4, PHP 5, PHP 7)
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.
eskiAranacak değer; çok sayıda değer belirtmek için dizi kullanılabilir.
yeniYeni değer; çok sayıda değer belirtmek için dizi kullanılabilir.
konuBir 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.