veröffentlicht am: 06.05.2020 zuletzt aktualisiert am: 07.02.2023
Oft arbeiten wir mit Zeichenketten, die mit Platzhaltern versehen sind oder Zeichen, die ersetzt werden müssen. Für diesen Anwendungsfall stellt uns PHP viele Funktionen zur Verfügung. Die Funktion, die ich hier vorstellen möchte, ist str_replace.
Die Funktion str_replace akzeptiert 4 Parameter, von diesen ist einer optional.
str_replace ($needle, $replace, $haystack, &$count) $needle (erforderlich) Der gesuchte Wert $replace (erforderlich) Der Wert, der gefundene Werte ersetzt. $haystack (erforderlich) Die zu durchsuchende Zeichenkette. &$count (optional) Anzahl der durchgeführten Ersetzungen.
Du kannst für $needle, $replace und $haystack auch Arrays statt Strings übergeben.Wie sich str_replace dann verhält, erkläre ich genauer im zweiten Teil des Artikels.
Der Parameter $count wird per Referenz übergeben.Das heißt, dass der Wert von $count von der Funktion verändert werden kann.Bedingung dafür ist, dass bei der Funktionsdefinition ein & vor dem Variablennamen angegeben wird.
Um nun einfach einen Teilstring in einem String zu ersetzen, kannst du str_replace so nutzen:
echo str_replace("world", "CodeCitrus", "Hello world!"); // Hello CodeCitrus!
Mit dem Parameter $count sieht das ganze nun so aus:
$i = 0; echo str_replace("A", "B", "A B A C D", $i); // B B B C D echo $i; // 2 echo str_replace("A", "B", "A B", $i); // B B echo $i; // 1
Wenn du für die Parameter Arrays statt Strings angibst, werden mehrere Ersetzungen nacheinander durchgeführt.
$string = '1 2 3 4'; $suche = array('1', '2', '3', '4'); $ersetze = array('2', '3', '4', '5'); echo str_replace($suche, $ersetze, $string); // 5 5 5 5
Das gleiche Ergebnis würdest du auch erhalten, wenn du die Ersetzungen einfach nacheinander durchführen würdest.
$string = '1 2 3 4'; $string = str_replace('1', '2', $string); echo $string; // 2 2 3 4 $string = str_replace('2', '3', $string); echo $string; // 3 3 3 4 $string = str_replace('3', '4', $string); echo $string; // 4 4 4 4 $string = str_replace('4', '5', $string); echo $string; // 5 5 5 5
Allerdings ist Vorsicht geboten, wenn das Array zur Ersetzung länger ist als das mit den Suchstrings.
$string = '1 2 3 4'; $suche = array('1', '2', '3', '4'); $ersetze = array('2', '3', '4'); echo str_replace($suche, $ersetze, $string); //
Hier ist das Ergebnis ein leerer String, da, wenn zu einem Suchstring keine Ersetzung vorhanden ist, einfach ein leerer String genommen wird.Das Ergebnis in diesem Fall ist nur komplett leer, da bei der letzten Ersetzung der String “4 4 4 4” enthalten würde.Die letzte Ersetzung ersetzt jede einzelne 4 durch “”.
$string = '1 2 3 4'; $suche = array('1', '2'); $ersetze = array('2'); echo str_replace($suche, $ersetze, $string); // 3 4
Wenn hingegen mehr Werte zur Ersetzung angegeben werden als Werte zur Suche, werden die überschüssigen Ersetzungswerte einfach nicht verwendet.
$string = '1 2 3 4'; $suche = array('1', '2'); $ersetze = array('2', '3', '4', '5'); echo str_replace($suche, $ersetze, $string); // 3 3 3 4
Falls du statt in einem String in einem Array ersetzt, ist auch der Rückgabewert ein Array. Jeder Wert des Arrays wird auch hier einzeln ersetzt.
$array = array('1', '2', '3', '4'); $suche = array('1', '2', '3', '4'); $ersetze = array('2', '3', '4', '5'); print_r(str_replace($suche, $ersetze, $array)); // Array ( [0] => 5 [1] => 5 [2] => 5 [3] => 5 )
str_replace beachtet die Groß- und Kleinschreibung (=ist case sensitive). str_ireplace hingegen nicht, und kann daher genauso verwendet werden, wenn Groß- und Kleinschreibung ignoriert werden soll.
$suche = array('a', 'b', 'c'); $string = 'A B C'; echo str_replace($suche, '', $string); // A B C echo str_ireplace($suche, '', $string); //
Mit der Funktion substr_replace kannst du den zu ersetzenden String mit der Index-Position angeben.
$string = "Hello world!"; $ersetze = 'CodeCitrus'; $start = 6; echo substr_replace($string, $ersetze, $start); // Hello CodeCitrus $zu_ersetzende_laenge = 3; echo substr_replace($string, $ersetze, $start, $zu_ersetzende_laenge); // Hello CodeCitrusld!
Einen Teilstring in einem String mit einem anderen String zu ersetzen ist einfach.Die Möglichkeit str_replace mit Arrays aufzurufen, macht die Funktion noch flexibler.Dies kann auch schnell zu sehr unübersichtlichem Code führen, ist daher mit Vorsicht zu genießen.Um Groß- und Kleinschreibung zu ignorieren, kannst du str_ireplace verwenden.Um statt einen zu ersetzenden Teilstring anzugeben, kannst du mit substr_replace einen Index angeben.
Wenn du noch Anmerkungen, Kritik oder Lob hast, schreib bitte einen Kommentar!
😩 Gelangweilt von den Udemy & YouTube-Tutorials?!
Lerne spielerisch Python, Java & SQL und komme deiner gutbezahlten (und an der 🌴 liegenden) Traumkarriere einen Schritt weiter.
"Für Leute die gerne Python oder Java lernen wollen ist Codegree klasse. Ist nicht wie bei anderen Konkurrenten auf Videokursen aufgebaut..."
- Lennart Sparbier
100% kostenlos registrieren · keine Kreditkarte notwendig
Im Gegensatz zu der Abendschule oder der alteingesessenen Uni lernst du bei codegree die Sprachen & Pakete, die wirklich im Jobmarkt gesucht werden.
100% kostenlos registrieren · keine Zahlungsdaten notwendig