(PHP 4, PHP 5, PHP 7)
strtr — Tauscht Zeichen aus oder ersetzt Zeichenketten
$str
, string $from
, string $to
) : string$str
, array $replace_pairs
) : string
Diese Funktion gibt eine Kopie von str zurück, in der
alle Vorkommen jedes Zeichens von from in das
korrespondierende Zeichen in to umgewandelt wurden.
Mit drei Argumenten gibt diese Funktion eine Kopie von
str zurück, in der alle Vorkommen jedes
(single-byte) Zeichens von from in das
korrespondierende Zeichen in to übersetzt wurden;
d. h. jedes Vorkommen von $from[$n] wurde ersetzt durch
$to[$n], wobei $n ein gültiger Offset
in beiden Argumenten ist.
Haben from und to eine
unterschiedliche Länge, werden die überzähligen Zeichen im jeweils
längeren Parameter ignoriert. Die Länge von str wird
die gleiche wie die des Rückgabewertes sein.
Wurden zwei Argumente übergeben, sollte das zweite ein
array in der Form array('from' => 'to',
...) sein. Der Rückgabewert ist ein string in dem
alle Vorkommen der Array Schlüssel durch die entsprechenden Werte ersetzt
wurden. Die längsten Schlüssel werden zuerst getestet werden.
Wurde eine Teilzeichenkette ersetzt, wird ihr neuer Wert nicht nochmals
durchsucht.
In diesem Fall können die Schlüssel und Werte beliebige Längen haben,
vorausgesetzt, es gibt keinen leeren Schlüssel; zusätzlich kann die Länge
des Rückgabewertes von der de str abweichen.
Diese Funktion ist jedoch dann am effizientesten, wenn alle Schlüssel die
gleiche Größe besitzen.
strDer String, in dem die Ersetzungen vorgenommen werden sollen.
from
Der String, der gegen to ausgetauscht
werden soll.
to
Der String, der from ersetzen soll.
replace_pairs
Der replace_pairs-Parameter kann anstatt der
Parameter to und
from verwendet werden. In diesem Fall muss ein
array in der Form array('von' => 'nach',
...) übergeben werden.
Gibt den übersetzten string zurück.
Wenn replace_pairs einen Schlüssel enthält, der
ein leerer string ("") ist, wird
FALSE zurückgegeben. Ist str kein Skalar, dann wird
er nicht in eine Zeichenkette umgewandelt; statt dessen wird eine Warnung
erzeugt und NULL zurückgegeben.
Beispiel #1 strtr()-Beispiel
//In dieser Form, strtr() übersetzt byte-zu-byte
//Daher gehen wir hier von einer single-byte Kodierung aus.
<?php
$addr = strtr($addr, "äåö", "aao");
?>
Das nächste Beispiel zeigt das Verhalten von strtr(),
aufgerufen mit nur zwei Argumenten. Beachten Sie den Vorrang der
Ersetzungen ("h" wird nicht gewählt, da es längere
Übereinstimmungen gibt) und dass der ersetzte Text nicht erneut durchsucht
wurde.
Beispiel #2 strtr()-Beispiel mit zwei Argumenten
<?php
$trans = array("h" => "-", "hello" => "hi", "hi" => "hello");
echo strtr("hi all, I said hello", $trans);
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
hello all, I said hi
Die zwei Verhaltensweisen unterscheiden sich wesentlich. Mit 3 Argumenten esetzt strtr() Bytes; mit zweien kann sie längere Teilzeichenketten ersetzen.
Beispiel #3 strtr() Vergleich der Verhaltensweisen
<?php
echo strtr("baab", "ab", "01"),"\n";
$trans = array("ab" => "01");
echo strtr("baab", $trans);
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
1001 ba01