Hallo Ariane,
Ich habe einen String welcher aus Zahlen, Buchstaben und Sonderzeichen besteht und möchte nun aus diesem String alle Leerzeichen und Sonderzeichen entfernen.
$alt = 'blablubb123456+#+*ÄÖüß:';
$neu = preg_replace('/[^[:alnum:]]/', '', $alt);
print($neu);
Die mittlere Zeile ersetzt alles, was PHP nicht als Buchstaben oder Ziffern anerkennt, mit einem Leerstring. Es werden also damit alle "Nicht-Buchstaben" und alle "Nicht-Ziffern" gelöscht.
Ich hatte mir nun vorgestellt, dass ich jedes einzelne Zeichen des Strings prüfe ob es in einem von mir festgelegten Array (bestehend aus den Buchstaben a-z und den Zahlen 0-9) vorkommt, falls ja bleibt das Zeichen im String, falls nein wird es entfernt.
Willst du nun alle Buchstaben behalten oder nur die kleinen Buchstaben von a bis z? Falls du letzeres vorhattest, dann geht das so:
$neu = preg_replace('/[^a-z0-9]/', '', $alt);
Der Befehl preg_replace() arbeitet mit so genannten regulären Ausdrücken (hier PCRE). Das sind die wirren Zeichen, die im ersten Parameter zwischen den Schräg-Strichen stehen. Die zu erklären, ist nicht ganz einfach. Sie geben eine Art Suchmuster an, nach dem im $alt gesucht werden soll, und wenn was gefunden wurde, wird es im Falle von preg_replace() ersetzt. Es gibt in PHP aber noch eine ganze Familie von weiteren preg-Befehlen. Mit denen kann man nach Mustern suchen, Zeichenketten nach Mustern teilen und noch vieles mehr ... Aber dazu muss man eben diese "RegEx-Muster-Sprache" lernen. Leider sind die wenigsten Web-Seiten zu dem Thema einsteigerfreundlich, da hilft nur Lernen-durch-Üben.
http://www.tote-taste.de/X-Project/regex/ (englisch)
MffG
EisFuX
Auch meine Hosenträger sind intelligent, in dem Sinne, dass man sie regulieren kann. Sie besitzen ein adaptives Verhalten.
Stanisław Lem
