So, nachdem wir uns wie bereits erwähnt durch die RegEx Ausdrücke gequält haben, sehen wir uns den Befehl preg_replace() mal in praktischen Beispielen an.

|

Aufbau von preg_replace

Die Funktion preg_replace() durchsucht einen String nach Übereinstimmungen mit dem Suchmuster und ersetzt die gefundenen Stellen durch den angegebenen Ersatzstring. Der Aufbau dieser Funktion ist folgender:

preg_replace(Suchmuster,Ersatzmuster,Suchstring[,Limit[,Anzahl]])

|

Was können wir da nun genau angeben:

  • Suchmuster – Der jeweilige RegEx Code den wir in den letzten Beiträgen gelernt haben
  • Ersatzmuster – Die neue Zeichenfolge die angewendet werden soll
  • Suchstring – Der String/Array das mit dem Suchmuster & Erstazmuster konfrontiert werden soll
  • Limit – Optional, die maximale Anzahl an Ersetzungen
  • Anzahl – Optional, enthält nach der Ersetzung die Anzahl der ersetzten Suchmuster

|

Einfaches Ersetzen eines Wortes

Wir wollen im ersten Beispiel in einem Satz einfach ein Wort austauschen. Der Logik nach würden wir wohl folgenden Code annehmen:

<?php

$altertext = "Der Sommer im Jahr 2014 war toll";
$suchmuster = "toll";
$ersatzmuster = "zum vergessen";

$neuertext = preg_replace($suchmuster, $ersatzmuster, $altertext);

echo $neuertext;

?>

Das funktioniert allerdings nicht, da der Befehl “preg_replace()” beim Suchmuster mit einem nicht alphanumerischen oder mit einem Maskierungszeichen beginnen muss.

|

Richtig wäre also:

<?php

$altertext = "Der Sommer im Jahr 2014 war toll";
$suchmuster = "(toll)";
$ersatzmuster = "zum vergessen";

$neuertext = preg_replace($suchmuster, $ersatzmuster, $altertext);

echo $neuertext;

?>

|

Limit

Versuchen wir gleich die neue Option “Limit”, also die maximale Anzahl von Ersetzung:

dazu machen wir aus unserer Variable $altertext das

$altertext = "Der Sommer im Jahr 2014 war toll, toll, toll, toll";

|

Und aus dem preg_replace() Befehl das

$neuertext = preg_replace($suchmuster, $ersatzmuster, $altertext, 3);

|

Der ganze neue Befehl sieht demzufolge so aus:

<?php

$altertext = "Der Sommer im Jahr 2014 war toll, toll, toll, toll";

$suchmuster = "(toll)";
$ersatzmuster = "zum vergessen";

$neuertext = preg_replace($suchmuster, $ersatzmuster, $altertext, 3);

echo $neuertext;

?>

|

Und unter http://phpfiddle.org/ kannst du nun live sehen was die Ziffer “3” verursacht:

preg_replace_01

 

|

Anzahl

Und der Vollständigkeithalber nehmen wir auch gleich die Option “Anzahl” dazu, die uns ja in einer Variable speichert, wie oft das Suchmuster gefunden bzw. ersetzt wurde:

Dazu fügen wir VOR dem Befehl preg_replace() eine neue Variable mit dem Anfangswert “0” (Null) hinzu. Diese  benötigen wir später um die Anzahl an Ersetzungen auch auszugeben:

$anzahl = 0;

|

Die wir am Ende auch ausgeben:

echo "<br>$anzahl";

|

Der “neue” preg_replace()” Befehl lautet nun

$neuertext = preg_replace($suchmuster, $ersatzmuster, $altertext, -1, $anzahl);

|

Die Option “-1” bedeutet in diesem Fall eine unbeschränkte Anzahl an Ersetzungen (also nicht wie vorher maximal 3). Der gesamte Code:

<?PHP

$altertext = "Der Sommer im Jahr 2014 war toll, toll, toll, toll";

$suchmuster = "(toll)";
$ersatzmuster = "zum vergessen";

$anzahl = 0;

$neuertext = preg_replace($suchmuster, $ersatzmuster, $altertext, -1, $anzahl);

echo $neuertext;
echo "<br>$anzahl";

?>

|

Du erhälst nun als Ergebnis, dass im gesamten Code das Wort “toll” gegen die Wörter “zum vergessen” ausgetauscht und die Anzahl von “4” ausgegeben wurde.

|

Praktisches Beispiel “doppelte Leerzeichen”

Ein praktisches Beispiel ist dabei einen Text

  • auf doppelte Leerzeichen zu prüfen,
  • dies gleich auf ein Leerzeichen zu korrigieren und
  • eine Statusmeldung auszugeben

|

Der Code dafür würde dabei folgendermaßen aussehen:

<?PHP

$altertext = "Der  Sommer im Jahr 2014  war vom Wetter her nicht  so optimal, aber  das waren wir ja  schon gewohnt!";

$suchmuster = "(  )";
$ersatzmuster = " ";

$anzahl = 0;

$neuertext = preg_replace($suchmuster, $ersatzmuster, $altertext, -1, $anzahl);

#Kontrollausgabe
echo $neuertext;
echo "<br>";
echo "Es wurden $anzahl doppelte Leerzeichen gefunden und korrigiert";

?>

|

Es stehen dir jetzt unzählige Möglichkeiten mit diesem Wissen zur Verfügung und wir werden den Befehl preg_replace() auch später noch öfters benötigen und erweitern. In diesem Artikel belasse ich es jetzt jedoch einmal dabei, da wir noch andere Befehle benötigen um die Stärke dieses Befehls so richtig ausschöpfen können.

Die nächste Thematik die wir nun behandeln widmet sich den Arrays: Schritt 16: Arrays (und Schleifen)

 

Über mich

Ich blogge hier über alle Themen mit denen ich in Berührung komme. Möchtest du wissen, warum ich so denke was ich schreibe, dann findest du unter "Über mich" mehr Informationen über mich und mein Leben

Weitere Beiträge