Regulärer Ausdruck: Nur Zahlen und Buchstaben
Christian Tank
- php
- regex
0 Der Martin0 Christian Tank0 TS
Hallo, ich habe eine php variable und möchte in dieser Variable nur Buchstaben, Zahlen und Leerzeichen behalten. Ich weiß, wie man per regex konkrete (vorher festgelegte) Zeichen aus einer Variable löscht, aber wie lösche ich ALLE Zeichen außer Buchstaben, Zahlen und Leerzeichen? Hat jemand einen Tipp? Danke! Christian
Hi,
ich habe eine php variable und möchte in dieser Variable nur Buchstaben, Zahlen und Leerzeichen behalten.
aller Wahrscheinlichkeit nach meinst du hier nicht Zahlen, sondern Ziffern. Und wie allgemein willst du den Begriff Buchstaben hier fassen? Nur ASCII?
Ich weiß, wie man per regex konkrete (vorher festgelegte) Zeichen aus einer Variable löscht
Na prima. Also brauchst du eine Zeichenklasse, die die erlaubten Zeichen enthält, und negierst diese. Nur Ziffern wäre [0-9], oder kurz [\d], Buchstaben (nur ASCII) wäre [A-Za-z], und ein Space wäre [\x20] oder [\s], wenn du auch Tabs, Zeilenumbrüche und andere Whitespace-Zeichen zulassen willst. Das Negationszeichen ist ein Zirkumflex. Also: [^\dA-Za-z\s]
Ergänzend: Ich weiß nicht, was du da wirklich vorhast; ich glaube aber, dein Ansatz ist ungünstig.
So long,
Martin
Ich weiß nicht, was du da wirklich vorhast; ich glaube aber, dein Ansatz ist ungünstig.
Nach einem Upload auf meinem Server lese ich php-Dokumente aus, um den Inhalt in einer Datenbank zu speichern (für eine Suchfunktion).
Ich habe mir folgendes überlegt: $content = preg_replace ( '/[^a-z0-9äöüßÄÖÜ()!§%&()$+#=,;.: ]/i', '', $content );
Allerdings werden folgende Zeichen nicht herausgelöscht und verursachen Fehler:
Dies ist ��� der Inhalt einer PDF Datei: ���
Hallo und guten Tag,
ich habe eine php variable und möchte in dieser Variable nur Buchstaben, Zahlen und Leerzeichen behalten.
aller Wahrscheinlichkeit nach meinst du hier nicht Zahlen, sondern Ziffern. Und wie allgemein willst du den Begriff Buchstaben hier fassen? Nur ASCII?
Ich weiß, wie man per regex konkrete (vorher festgelegte) Zeichen aus einer Variable löscht
Na prima. Also brauchst du eine Zeichenklasse, die die erlaubten Zeichen enthält, und negierst diese. Nur Ziffern wäre [0-9], oder kurz [\d], Buchstaben (nur ASCII) wäre [A-Za-z], und ein Space wäre [\x20] oder [\s], wenn du auch Tabs, Zeilenumbrüche und andere Whitespace-Zeichen zulassen willst. Das Negationszeichen ist ein Zirkumflex. Also: [^\dA-Za-z\s]
Ergänzend: Ich weiß nicht, was du da wirklich vorhast; ich glaube aber, dein Ansatz ist ungünstig.
Vielleicht hilt da bezüglich der Basisidee der brutale Normalizer "fname_filter()" aus dem Wiki-Artikel "File-Uploads"?
Da geht es auch um die resultierende verdichtete Menge aus diversen Zeichensätzen.
Grüße
TS