(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.
dizge
Karakterleri dönüştürülecek dizge.
eski
Yerine yenisi konacak baytlar.
yeni
Eskisinin 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