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.
Interessiert in verschiedenste IT Themen, schreibe ich in diesem Blog über Software, Hardware, Smart Home, Games und vieles mehr. Ich berichte z.B. über die Installation und Konfiguration von Software als auch von Problemen mit dieser. News sind ebenso spannend, sodass ich auch über Updates, Releases und Neuigkeiten aus der IT berichte. Letztendlich nutze ich Taste-of-IT als eigene Dokumentation und Anlaufstelle bei wiederkehrenden Themen. Ich hoffe ich kann dich ebenso informieren und bei Problemen eine schnelle Lösung anbieten. Wer meinen Aufwand unterstützen möchte, kann gerne eine Tasse oder Pod Kaffe per PayPal spenden – vielen Dank.