Nur Buchstaben in einem String
Ariane
- php
Hallo zusammen,
ich sammel zur Zeit meine ersten Erfahrungen mit PHP und nun stehe ich vor folgendem Problem:
Ich habe einen String welcher aus Zahlen, Buchstaben und Sonderzeichen besteht und möchte nun aus diesem String alle Leerzeichen und Sonderzeichen entfernen.
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.
Ich habe mir nun im PHP Manual alle String funktionen angeschaut aber leider nichts vergleichbares gefunden.
Kann mir jemand weiterhelfen?
Vielen Dank im Voraus
Liebe Grüße
Ariane
Hallo,
Ich habe einen String welcher aus Zahlen, Buchstaben und Sonderzeichen besteht und möchte nun aus diesem String alle Leerzeichen und Sonderzeichen entfernen.
Beguck Dir mal die Funktion preg_replace.
Damit kannst Du reguläre Ausdrücke zum Ersetzen verwenden, ein sehr mächtiges Konzept.
ein
$neuerText = preg_replace("/[^a-zA-Z0-9äöüÄÖÜß]/", "" $orginalText);
("Ersetze alles was weder Buchstabe (a-z bzw. A-Z) noch Ziffer (0-9) noch Umlaut ist durch """)
oder sowas sollte tun.
Viele Grüße,
Jörg
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
Vielen Dank an alle,
Liebe Grüße
Ariane