Funktion str_replace() - String ersetzen
In PHP-Anwendungen hat man es häufig mit Zeichenketten zu tun, die aus der Anwendung heraus verändert werden müssen, sodass ein Teil der Zeichenkette durch ein anderes ersetzt wird. Ein typisches Beispiel hierfür ist ein Filter, mit dem unpassende Wörter ersetzt werden sollen. Für solche Aufgaben kann man die Funktion str_replace() verwenden. Innerhalb der runden Klammern werden bis zu 4 Parameter angegeben, die folgende Bedeutung haben.
- Der gesuchte Teil der Zeichenkette, der ersetzt werden soll.
- Der Wert, mit dem der gesuchte Teil ersetzt werden soll.
- Die Zeichenkette, auf die die Ersetzung angewendet werden soll.
- Zählvariable, in der die Anzahl der Ersetzungen gespeichert werden (optional).
Beim folgenden Beispiel wird in der Variable $str das Wort Böses durch Gutes ersetzt.
<?php
$str = 'Böses Wort';
// Ausgabe Gutes Wort
echo str_replace('Böses', 'Gutes', $str);
?>
Beim Ersetzungsvorgang gibt es keine Begrenzung, sodass es zu mehreren Ersetzungen kommen kann. Die Anzahl der Ersetzungen kann in der Variable gespeichert werden, die man als 4. Parameter angibt.
<?php
$count = 0;
$str = 'Böses Wort Böses Wort Böses Wort Böses Wort Böses Wort';
// Ausgabe Gutes Wort...
echo str_replace('Böses', 'Gutes', $str, $count);
// Ausgabe 5
echo $count;
?>
Es ist auch möglich, über ein Array mehrere Werte anzugeben, die ersetzt werden sollen. Die Ersetzung kann auch mit einem leeren String erfolgen, sodass der zu suchende Wert praktisch entfernt wird.
<?php
$str = 'A B C D E F G H I J';
$suchen = array('A ', 'C ', 'E ', 'G ', 'I ');
// Ausgabe B D F H J
echo str_replace($suchen, '', $str);
?>
Der zweite Parameter, mit dem angegeben wird, durch welchen Wert die zu suchenden Werte ersetzt werden sollen, kann ebenfalls ein Array sein. In dem Fall gilt, dass der erste Wert im Such-Array durch den ersten Wert im Ersetzungs-Array ersetzt wird. Beim folgenden Beispiel wird A durch B ersetzt, C durch D usw.
<?php
$str = 'A B C D E F G H I J';
$suchen = array('A ', 'C ', 'E ', 'G ', 'I ');
$ersetzen = array('B ', 'D ', 'F ', 'H ', 'J ');
// Ausgabe B B D D F F H H J J
echo str_replace($suchen, $ersetzen, $str);
?>
Hierbei muss man beachten, dass es zu einer Folge von Ersetzungen kommen kann und eingesetzte Werte selbst ersetzt werden. Beim folgenden Beispiel wird A durch B ersetzt, B wiederum durch C usw. Am Ende bleibt nur noch K übrig.
<?php
$str = 'A B C D E F G H I J';
$suchen = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J');
$ersetzen = array('B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K');
// Ausgabe K K K K K K K K K K
echo str_replace($suchen, $ersetzen, $str);
?>
Das Suchen und Ersetzen kann auch in einem Array vorgenommen werden. Der Rückgabewert ist dann ebenfalls ein Array, der z.B. mit der foreach-Schleife ausgegeben werden kann.
<?php
$str = array('AB', 'CD', 'EF', 'GH', 'IJ');
$suchen = array('A', 'C', 'E', 'G', 'I', 'K');
$ersetzen = array('B', 'D', 'F', 'H', 'J', 'L');
$ergebnis = str_replace($suchen, $ersetzen, $str);
// Array ausgeben
// Ausgabe untereinander BB, DD, FF, HH, JJ
foreach ($ergebnis as $wert)
{
echo $wert . '<br>';
}
?>
Die Funktion str_replace() verarbeitet die Zeichenketten case-sensitive, sodass zwischen Groß- und Kleinschreibung unterschieden wird. Beim folgenden Code hat die Funktion praktisch keine Auswirkung.
<?php
$str = 'A B C D E F G H I J';
$suchen = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j');
// Ausgabe A B C D E F G H I J
echo str_replace($suchen, '', $str);
?>
Die Funktion str_replace() ersetzt auch Sonderzeichen oder Umlaute. Wenn die Groß- und Kleinschreibung nicht berücksichtigt werden soll, kann man str_ireplace() verwenden. Damit kann man ebenfalls Teile einer Zeichenkette durch andere Werte ersetzen. Jedoch mit dem Unterschied, dass es nicht case-sensitive ist.