Christian Tank: Regulärer Ausdruck: Nur Zahlen und Buchstaben

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

  1. 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

    --
    Nothing travels faster than the speed of light with the possible exception of bad news, which obeys its own special laws.
    - Douglas Adams, The Hitchhiker's Guide To The Galaxy
    1. 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: ���

    2. 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

      --
      es wachse der Freifunk
      http://freifunk-oberharz.de