strtr

(PHP 4, PHP 5, PHP 7)

strtrTauscht Zeichen aus oder ersetzt Zeichenketten

Beschreibung

strtr ( string $str , string $from , string $to ) : string
strtr ( 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.

Parameter-Liste

str

Der 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.

Rückgabewerte

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.

Beispiele

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

Siehe auch

  • str_replace() - Ersetzt alle Vorkommen des Suchstrings durch einen anderen String
  • preg_replace() - Sucht und ersetzt mit regulären Ausdrücken