PHP Development – preg_replace – Zeichen aus String entfernen

In PHP lassen sich relativ einfach ungewollte Zeichen aus einem String entfernen. Der Befehl der hier verwendet werden kann nennt sich “preg_replace” (PHP Manual zu preg_replace). Dieser erlaubt das Suchen mittels regulärer Ausdrücke innerhalb einer Zeichenkette.

Da das Thema sehr umfangreich ist, grade was die regulären Ausdrücke angeht, zeige ich nachfolgend ein paar Beispiele und erkläre sie kurz. Je nach Anwendung und Situation gibt es verschiede Ansätze und Möglichkeiten. Generell geht man nach der Whitelist-Methode vor, bei der nur die Zeichen angegeben werden die gewünscht sind.

preg_replace – Befehlsgrundlage (short)
# preg_replace(Suchmuster, Austauschzeichen, Zeichenkette)

  • das Suchmuster stellt den Ausdruck dar nachdem gesucht werden soll
  • Austauschzeichen ist die Zeichenkette oder ein Array, das statt dessen gesetzt werden soll
  • Zeichenkette oder Array das durchsucht werden soll

Vorwort zu den nachfolgenden Suchmustern.

  • \ – Escape nachfolgendes Zeichen (z.B. Punkte, Slash, Tab, (t), neue Zeile (n) usw.)
  • [ ] – Zeichenkette enthält eines dieser Zeichen aus den eckigen Klammern
  • ^- Start des Strings
  • \i – Case insensitive
  • \s – Leerzeichen / Whitespaces

Beispiel – alle Zeichen entfernen die kein kleiner oder großer Buchstabe sind:

$string = "Heute wird es >15 Grad warm!";
$ergebnis = preg_replace("/[^a-zA-Z]/", "", $string);
echo $ergebnis;
# HeutewirdesGradwarm

Hier lässt sich auch mit dem Schalter “\i” arbeiten, der für Case-insensitive steht und somit keinen Wert auf Klein- oder Großschreibung legt.

Beispiel – alle Zeichen außer Klein- und Großbuchstaben und Zahlen entfernen:

$string = "Heute wird es >15 Grad warm!";
$ergebnis = preg_replace("/[^a-zA-Z0-9]/", "", $string);
echo $ergebnis;
# Heutewirdes15Gradwarm

Beispiel – nun wollen wir nicht nur die Buchstaben und Zahlen erhalten, sondern auch die Leerzeichen / Whitespace:

$string = "Heute wird es >15 Grad warm!";
$ergebnis = preg_replace("/[^a-zA-Z0-9\s]/", "", $string);
echo $ergebnis;
# Heute wird es 15 Grad warm

Entscheidend ist hier der Schalter “\s”, der für den Erhalt von Leerzeichen steht.

Beispiel – nun soll der gesamte Satz, außer dem “>” größer als Zeichen erhalten bleiben:

$string = "Heute wird es >15 Grad warm!";
$ergebnis = preg_replace("/[^a-zA-Z0-9!\s]/", "", $string);
echo $ergebnis;
# Heute wird es 15 Grad warm

Wie bereits geschrieben ist das Thema wesentlich komplexer, jedoch sollte obiges als Einstieg helfen und ein paar Tipps zum Gebrauch von preg_replace liefern.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.