1. Code
  2. PHP

Wie man in PHP Strings ersetzt

Scroll to top
5 min read

German (Deutsch) translation by Ines Willenbrock (you can also view the original English article)

Das Suchen und Ersetzen eines Textes durch etwas anderes ist in vielen Anwendungen eine sehr häufige Aufgabe. Wenn wir in PHP mit Text arbeiten wird dies ebenfalls regelmässig benötigt. Daher konzentriert sich dieses Tutorial darauf, in PHP eine Zeichenfolge durch eine andere zu ersetzen.

Ersetzen von Zeichenfolgen in PHP mit str_replace()

Wie viele Dinge hat PHP auch eine eingebaute Funktion, die Sie verwenden können, um Strings in PHP zu ersetzen. Die Funktion str_replace($search, $replace, $subject, $count) verwendet vier Parameter, die bestimmen, wie sich die Funktion verhalten wird.

Der erste Parameter ist $search. Er wird verwendet, um die Zeichenfolgen anzugeben, die Sie ersetzen möchten. Die Zeichenfolgen, die die ursprüngliche Zeichenfolge ersetzen, werden mit $replace angegeben. Der Parameter $subject ist die Hauptzeichenfolge oder der Heuhaufen, in dem Sie alle Ihre Ersetzungen erledigen werden. Der Wert von $search und $replace kann entweder ein Array oder eine Zeichenfolge sein.

Ersetzen Sie einen String durch einen anderen in PHP

Wenn wir nur eine einzelne Zeichenfolge durch etwas anderes ersetzen möchten, können wir einfach einen Zeichenfolgenwert für $search und $replace bereitstellen.

1
<?php
2
3
$sentence = "Andrew prefers tea to coffee.";
4
5
$search = "Andrew";
6
$replace = "Adam";
7
8
$new_sentence = str_replace($search, $replace, $sentence);
9
10
// Adam prefers tea to coffee.

11
echo $new_sentence;
12
13
?>

Ersetzen mehrerer Zeichenfolgen durch eine einzelne Zeichenfolge

Wie bereits erwähnt, können Sie den Wert von $search als Array angeben. Wenn $replace eine einzelne Zeichenfolge ist, werden alle im $search-Array enthaltenden Werte in unserer Hauptzeichenfolge durch $replace ersetzt.

1
<?php
2
3
$sentence = "There were 60 bananas and 12 oranges in the first basket. Some children ate 2 mangoes each.";
4
5
$search = ["bananas", "mangoes"];
6
$replace = "apples";
7
8
$new_sentence = str_replace($search, $replace, $sentence);
9
10
// There were 60 apples and 12 oranges in the first basket. Some children ate 2 apples each.

11
echo $new_sentence;
12
13
?>

Entfernen von Zeichen oder Teilzeichenfolgen aus einer Zeichenfolge

Beim Entfernen von Zeichen oder Teilzeichenfolgen aus einer Zeichenfolge müssen Sie einfach den Wert von $replace auf eine leere Zeichenfolge festlegen.

1
<?php
2
3
$sentence = "Andrew, Monty and Adam will be meeting at the club today.";
4
5
$search = [", Monty"];
6
$replace = "";
7
8
$new_sentence = str_replace($search, $replace, $sentence);
9
10
// Andrew and Adam will be meeting at the club today.

11
echo $new_sentence;
12
13
?>

Ersetzen sie einige Teilzeichenfolgen, und entfernen Sie andere aus einer Zeichenfolge

Sowohl $search als auch $replace können als Array angegeben werden. In diesem Fall wird das erste Element in $search durch das erste Element in $replace usw. ersetzt. Mit anderen Worten, Teilzeichenfolgen in $search werden in $replace entsprechenden Indizes durch Teilzeichenfolgen ersetzt.

Was passiert, wenn die $search und $replace Arrays eine ungleiche Länge haben? Wenn $search mehr Elemente als $replace hat, werden zusätzliche Elemente in $search durch eine leere Zeichenfolge ersetzt.

1
<?php
2
3
$sentence = "There were 60 bananas and 12 oranges in the first basket. Some children ate 2 mangoes each.";
4
5
$search = ["bananas", "mangoes"];
6
$replace = ["apples"];
7
8
$new_sentence = str_replace($search, $replace, $sentence);
9
10
// There were 60 apples and 12 oranges in the first basket. Some children ate 2  each.

11
echo $new_sentence;
12
13
?>

Dieses Beispiel ist dem, das wir oben geschrieben haben, um Bananen und Mangos durch Äpfel zu ersetzen, sehr ähnlich. Der einzige Unterschied ist diesmal, dass $replace jetzt ein Array mit einem einzelnen Element ist. Dies führt jedoch zu einem völlig anderen Ergebnis, da Mangos jetzt durch eine leere Teilzeichenkette ersetzt werden.

Zählen der Anzahl der Ersetzungen

Es gibt einen vierten Parameter, den Sie an str_replace() übergeben können. Der Wert dieses vierten Parameters wird auf die Anzahl der erlegenen Ersetzungen festgelegt, die von str_replace() ausgeführt werden. Dieser kann in einer Vielzahl von Situationen hilfreich sein. Wenn Sie z. B. im Voraus wissen, wie viele Ersetzungen von str_replace() ausgeführt werden sollen, können Sie den von str_replace() festgelegten Wert verwenden, um sicherzustellen, dass keine unerwarteten Ersetzungen vorhanden sind.

1
<?php
2
3
$sentence = "The house was filled with apples. There were apples in the fridge and there were apples on the dining table.

4
There were multiple baskets of apples in the living room. We were eating apples for breakfast, lunch and dinner.";
5
6
$search = "apples";
7
$replace = "mangoes";
8
$count = 0;
9
10
$new_sentence = str_replace($search, $replace, $sentence, $count);
11
12
// The house was filled with mangoes. There were mangoes in the fridge and there were mangoes on the dining table.

13
// There were multiple baskets of mangoes in the living room. We were eating mangoes for breakfast, lunch and dinner.

14
echo $new_sentence;
15
16
// 5

17
echo $count;
18
19
?>

Wichtige Punkte, die Sie im Auge behalten sollten

Wie viele andere Funktionen verfügt auch PHP über eine Version von str_replace(), die die Groß-/Kleinschreibung nicht berücksichtigt, nämlich str_ireplace(). Sie funktioniert genau wie str_replace(), führt aber die Ersetzungen ohne Berücksichtigung der Groß-/Kleinschreibung durch.

1
<?php
2
3
$sentence = "I ate one aPPle and he ate three Apples.";
4
5
$search = "apple";
6
$replace = "banana";
7
8
$new_sentence = str_ireplace($search, $replace, $sentence);
9
10
// I ate one banana and he ate three bananas.

11
echo $new_sentence;
12
13
?>

Wenn Sie str_replace() verwenden, stellen Sie sicher, dass die Zeichenfolgen, die Sie ersetzen, nicht Teil längerer Wörter sind. Dies kann zu unerwarteten Ergebnissen führen. Hier ist ein Beispiel:

1
<?php
2
3
$sentence = "My nana was eating a banana.";
4
5
$search = "nana";
6
$replace = "friend";
7
8
$new_sentence = str_replace($search, $replace, $sentence);
9
10
// My friend was eating a bafriend.

11
echo $new_sentence;
12
13
?>

Letzte Gedanken

In diesem Tutorial haben wir verschiedene Situationen behandelt, die auftreten können, wenn wir Zeichenfolgen in PHP ersetzen. Die str_replace() Funktion ist ideal für solche grundlegenden Ersetzungen. Es ist jedoch wichtig, mit den Werten vorsichtig zu sein, die wir an verschiedene Parameter übergeben. Andernfalls werden wir einige unerwartete Ergebnisse erhalten, wie in den Beispielen gezeigt. Sie sollten die Funktion preg_replace() für kompliziertere Zeichenfolgenersetzungen verwenden.