(PHP 4, PHP 5, PHP 7, PHP 8)
strtr — Belli karakterleri veya alt dizgeleri değiştirir
Alt dizgelerle çalışan sözdizimi:
Üç bağımsız değişken verilirse, bu işlev, dizge içinde
rastladığı eski dizgesindeki her bir (tek baytlık)
karakteri, yeni dizgesindeki karşılık gelen karakterle
değiştirerek elde edilen dizgeyi döndürür. Yani, eski
ve yeni dizgelerinde $n belli bir
konumu gösterdiğinde dizge içinde rastlanılan her
$eski[$n] yerine $yeni[$n] konarak elde
edilen dizge döndürülür.
Eğer eski ve yeni dizgeleri
farklı uzunluktaysa dizgelerden uzun olanının fazla baytları yok sayılır.
Dönüş değerinin uzunluğu ile dizge uzunluğu aynı
olacaktır.
İki bağımsız değişken verilirse, ikincisi
array('eski' => 'yeni', ...) biçeminde bir dizi
olmalıdır. Dönüş değeri, dizi anahtarlarının karşılık gelen değerlerle
değiştirildiği bir dizgedir. İlk olarak en uzun anahtarlar denenir.
Bir kere değiştirilen metin bir daha değerlendirilmez.
Bu durumda, boş anahtar olmaması koşuluyla anahtarlar ve değerler herhangi bir uzunlukta olabilir; ek olarak, dönüş değerinin uzunluğu dizgeden farklı olabilir. Bununla birlikte, işlev için en verimli durum tüm anahtarların aynı boyutta olduğu durumdur.
dizgeKarakterleri dönüştürülecek dizge.
eskiYerine yenisi konacak baytlar.
yeniEskisinin yerine konacak baytlar.
eski_yeni
array('eski' => 'yeni', ...) biçeminde alt dizge
çiftlerinden oluşan bir dizi.
eski_yeni dizisi anahtarı boş dizge
("") olan bir çift içeriyorsa, bu çift yoksayılır.
PHP 8.0.0 ve sonrasında böyle bir durumda bir
E_WARNING çıktılanır.
Dönüştürülen dizgeyle döner.
Örnek 1 - strtr() örneği
<?php
// Burada, strtr() bayt bayt dönüşüm yapar
// Dolayısıyla burada tek baytlı kodlama (ISO-8859-*) kullanıldığı varsayılıyor
$addr = strtr($addr, "äåö", "aao");
?>
Aşağıdaki örnekte strtr() işlevi iki bağımsız değişken ile
çağrılmaktadır. Değiştirme tercihlerine dikkat: "h"
daha uzun bir eşleşmenin parçası olduğundan ve bir kere değişen metin
tekrar değerlendirilmediğinden işlem görmemiştir.
Örnek 2 - İki bağımsız değişkenli strtr() örneği
<?php
$trans = array("h" => "-", "hello" => "hi", "hi" => "hello");
echo strtr("hi all, I said hello", $trans);
?>Yukarıdaki örneğin çıktısı:
hello all, I said hi
Aşağıdaki iki davranış biçimi büyük ölçüde farklıdır. Üç bağımsız değişkenli strtr() baytları değiştirirken, ikili olanı alt dizgeleri değiştiriyor.
Örnek 3 - strtr() davranış karşılaştırması
<?php
echo strtr("baab", "ab", "01"),"\n";
$trans = array("ab" => "01");
echo strtr("baab", $trans);
?>Yukarıdaki örneğin çıktısı:
1001 ba01