str_replace($search, $replace, $subject) $search değerinin her geçişi $replace ile değiştirilmiş bir $subject kopyası döndürür. str_replace('world', 'PHP', 'Hello world') "Hello PHP" döndürür.
Fonksiyon yeni dizgeyi döndürür; verdiğiniz değişkeni değiştirmez. Sonucu, aynı değişkene bile olsa atayın: $text = str_replace(...).
Söz dizimi
str_replace(
array|string $search,
array|string $replace,
string|array $subject,
int &$count = null
): string|array
İlk üç argümanın her biri bir dizge veya bir dizi olabilir. $subject bir diziyse değiştirme her elemanda çalışır ve aynı anahtarlara sahip bir dizi geri alırsınız: str_replace('.txt', '.md', ['a.txt', 'b.txt']) ['a.md', 'b.md'] döndürür. Arama büyük küçük harfe duyarlıdır ve kalıpları değil düz metni eşleştirir. Kalıplar için preg_replace() kullanın.
Aynı anda birkaç dizgeyi değiştirme
$search ve $replace için diziler verin. İlk arama değeri ilk değiştirme değeriyle, ikincisi ikinciyle değiştirilir ve böyle devam eder. $replace tek bir dizgeyse her arama değeri onunla değiştirilir; bu, bir karakter kümesini silmenin kısa yoludur.
Sıra tuzağı ve strtr()
Dizilerle str_replace() değiştirmeleri tüm dizge üzerinde birbiri ardına çalıştırır. Sonraki bir arama, önceki bir değiştirmenin az önce eklediği metinle eşleşebilir. Bir diziyle strtr() her şeyi tek geçişte değiştirir, önce en uzun anahtarları dener ve zaten değiştirdiği metne asla dokunmaz.
Yer değiştirmeler ve değerlerin içinde görünebilecek şablon yer tutucuları için strtr() kullanın.
Değiştirmeleri sayma
Dördüncü argüman yapılan değiştirme sayısıyla doldurulur. Bir değişken verin; PHP onun içine yazar.
str_ireplace ile büyük küçük harfe duyarsız değiştirme
str_ireplace() aynı argümanları alır ve eşleştirirken büyük küçük harfi yok sayar. Değiştirme değeri tam olarak yazdığınız gibi eklenir.
str_ireplace() yalnızca ASCII harflerde büyük küçük harfi eşitler. Aksanlı veya Kiril harflerinde büyük küçük harfe duyarsız değiştirme için i ve u değiştiricileriyle preg_replace() kullanın.
Yalnızca ilk geçişi değiştirme
str_replace() her zaman her şeyi değiştirir. Yalnızca ilk eşleşmeyi değiştirmek için onu strpos() ile bulun ve substr_replace() ile kesip çıkarın:
Son geçiş için strpos() yerine strrpos() kullanın.
Boşlukları, yeni satırları ve diğer karakterleri silme
Boş bir dizgeyle değiştirmek metni siler. Yaygın bir temizlik satır sonlarını veya tüm boşlukları siler; Japonca girdi ise çoğu zaman normal bir " " aramasının eşleşmediği tam genişlikte boşluklar ( , U+3000) içerir.
Dizide "\r\n" değerini "\n" ve "\r" değerlerinden önce koyun, böylece bir Windows satır sonu iki değil tek boşluk olur.
Sıkça Sorulan Sorular
PHP'de bir dizgedeki metni nasıl değiştiririm?
str_replace($search, $replace, $subject) kullanın: str_replace('cat', 'dog', 'cat and cat') "dog and dog" döndürür. Her geçişi değiştirir ve yeni bir dizge döndürür; orijinal değişmez.
str_replace büyük küçük harfe duyarlı mı?
Evet. str_replace('php', 'PHP', 'Php') hiçbir şeyi değiştirmez. Aynı argümanları alan ve büyük küçük harfi yok sayan str_ireplace() kullanın.
PHP'de yalnızca ilk geçişi nasıl değiştiririm?
str_replace() fonksiyonunun limit argümanı yoktur. Konumu strpos() ile bulun ve substr_replace($s, $replace, $pos, strlen($search)) kullanın ya da preg_replace('/' . preg_quote($search, '/') . '/', $replace, $s, 1) kullanın.
PHP'de aynı anda birden çok dizgeyi nasıl değiştiririm?
Diziler verin: str_replace(['a', 'b'], ['1', '2'], $s). Değiştirmeler sırayla çalışır, bu yüzden sonraki bir arama öncekinin eklediği metinle eşleşebilir. strtr($s, ['a' => '1', 'b' => '2']) her şeyi tek geçişte değiştirir ve asla yeniden değiştirmez.
str_replace Japonca metinle çalışır mı?
Evet. str_replace() baytları eşleştirir ve tam bir UTF-8 karakteri asla başka bir karakterin içinde eşleşmez, bu yüzden str_replace('東京', '大阪', $s) güvenlidir. Bir mb_ sürümüne gerek yoktur.