str_replace()
Unser Artikel erklärt die PHP-Funktion str_replace(), mit der alle Vorkommen eines Strings in einem anderen String ersetzt werden können.
Die PHP-Funktion str_replace() ersetzt alle Vorkommen eines Suchstrings durch einen Ersatzstring. Sie ist nützlich, um bestimmte Muster innerhalb eines größeren Textes zu finden und zu ersetzen. Im Folgenden behandeln wir die Syntax, die wichtigsten Merkmale und Verwendungsbeispiele.
Die Funktion str_replace() wird verwendet, um alle Vorkommen eines Strings in einem anderen String zu ersetzen. Die Syntax der Funktion str_replace() lautet wie folgt:
Die PHP-Syntax von str_replace()
str_replace($search, $replace, $subject, $count = null)Die Funktion nimmt drei erforderliche Parameter und einen optionalen Parameter entgegen: $search, $replace, $subject und $count.
$search: Der String oder das Array von Strings, nach dem gesucht wird.$replace: Der String oder das Array von Strings, der als Ersatz verwendet wird.$subject: Der String oder das Array von Strings, in dem gesucht wird.$count(optional): Eine per Referenz übergebene Variable, die mit der Anzahl der vorgenommenen Ersetzungen befüllt wird.
Die Funktion gibt das modifizierte $subject zurück. Der ursprüngliche String wird nie direkt geändert, daher muss der Rückgabewert gespeichert werden. str_replace() ist case-sensitive — "World" und "world" werden als unterschiedliche Strings behandelt. Falls die Groß-/Kleinschreibung ignoriert werden soll, verwende stattdessen str_ireplace().
Ein einfaches Beispiel
Hier ist die einfachste Verwendung der Funktion str_replace() — das Ersetzen eines Wortes durch ein anderes:
Beispiel für PHP str_replace()
In diesem Beispiel enthält die String-Variable $string den Satz "The quick brown fox jumps over the lazy dog." Wir ersetzen das Wort "brown" durch "red", indem wir "brown" als $search und "red" als $replace übergeben. Die Ausgabe lautet:
The quick red fox jumps over the lazy dog.Jedes Vorkommen wird ersetzt — nicht nur das erste. Wenn der Suchstring dreimal vorkommt, werden alle drei in einem einzigen Aufruf ersetzt.
Mehrere Strings gleichzeitig ersetzen
Wenn $search und $replace Arrays sind, wird jedes Element von $search durch das Element am gleichen Index in $replace ersetzt. Das optionale vierte Argument $count wird per Referenz übergeben und erhält die Gesamtanzahl der Ersetzungen:
Beispiel mit Arrays und $count
<?php
$search = ["brown", "fox"];
$replace = ["red", "bear"];
$subject = "The quick brown fox jumps over the lazy dog.";
$count = 0;
$result = str_replace($search, $replace, $subject, $count);
echo $result; // Output: The quick red bear jumps over the lazy dog.
echo "Replacements made: $count"; // Output: Replacements made: 2
?>Wenn $replace ein einzelner String ist, aber $search ein Array, wird dieser eine String für alle Treffer verwendet:
<?php
$result = str_replace(["a", "e", "i"], "*", "education");
echo $result; // Output: *duc*t*on
?>Ein Fallstrick: Ersetzungen kaskadieren
Array-Ersetzungen werden der Reihe nach angewendet, wobei jede auf dem Ergebnis der vorherigen aufbaut. Das bedeutet, dass ein gerade eingefügter Wert von einem späteren Suchbegriff erneut gefunden werden kann:
<?php
$count = 0;
$result = str_replace(["A", "B"], ["B", "C"], "A", $count);
echo $result; // Output: C
echo "\n";
echo "Replacements: $count"; // Output: Replacements: 2
?>Hier wird "A" im ersten Durchgang zu "B", dann wird dieses "B" im zweiten Durchgang zu "C" — das Endergebnis ist also "C" mit zwei gezählten Ersetzungen. Ordne die Such-/Ersetzungspaare sorgfältig an, um dies zu vermeiden, oder verwende strtr(), wenn jedes Paar genau einmal angewendet werden soll.
Wann str_replace() verwenden?
- Verwende
str_replace()für schnelle, wörtliche Suche-und-Ersetzen-Operationen, wenn der genaue Text bekannt ist. - Verwende
str_ireplace(), wenn die Groß-/Kleinschreibung beim Abgleich ignoriert werden soll. - Verwende
substr_replace(), um einen Teil eines Strings nach Position statt nach Inhalt zu ersetzen. - Verwende
preg_replace(), wenn Musterabgleich mit regulären Ausdrücken benötigt wird.
Die Funktion str_replace() bietet eine unkomplizierte, effiziente Möglichkeit, Text in PHP zu suchen und zu ersetzen. Da sie mit einfachen Strings ohne Regex-Overhead arbeitet, ist sie das richtige Werkzeug, wenn exakter, wörtlicher Text abgeglichen werden soll.