Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] preg_match - Sonderzeichen nicht erlauben

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] preg_match - Sonderzeichen nicht erlauben

    Hallo,

    ich möchte Zeichen wie !"§$%/()=+ nicht erlauben.

    Mit folgendem Code sollte doch überprüft werden, ob es in der Zeichenkette ein Zeichen außerhalb der Klasse gibt.
    PHP-Code:
    preg_match('/[^a-zA-Z0-9 -_ÄäÜüÖöß]/'$newsite 
    Wenn ich aber z.B. ein Ausrufezeichen eingebe, erhalte ich keine Fehlermeldung.

    Was mache ich falsch?

  • #2
    Zunächst solltest du den Divis - maskieren: \-, sonst wird das als Bereichsangabe interpretiert. Als nächstes ist zu sagen, dass auch das Ausrufezeichen ein reserviertes Zeichen ist und maskiert werden muss: \!.
    Aber mal ehrlich: hast du allen Ernstes vor, alle nicht erlaubten Zeichen aus einem Pool von 65536 möglichen Zeichen herauszufiltern? Du solltest lieber gegen eine Whitelist prüfen, welche Zeichen erlaubt sind.

    Kommentar


    • #3
      Gegen eine Blacklist .. nicht erlaubt ..

      Kommentar


      • #4
        Hm.
        Aber ist das nicht eine Whitelist?
        PHP-Code:
        preg_match('/[^ ... ]/'$newsite 
        erlaubt doch alles, was innerhalb von ... steht.
        Und
        PHP-Code:
        preg_match('/^[ ... ]/'$newsite 
        erlaubt doch alles, was außerhalb von ... steht. Oder irre ich mich da?

        Kommentar


        • #5
          Hallo,

          hier mal zwei Links zur Erklärung der Unterschiede deiner beiden Beispiele:

          Der RegExp-Evaluator - RegExp-Tutorial - Zeichenklassen

          Der RegExp-Evaluator - RegExp-Tutorial - Metazeichen

          Zu: Blacklist vs. Whitelist

          Suche nach allen Zeichen, die du erlauben möchtest und negiere dann die Bedingung:

          PHP-Code:
          if (!preg_match('/^[0-9a-z]+$/i'$string)) {
            
          // ungültige Zeichen gefunden

          Kommentar


          • #6
            Ah. Jetzt verstehe ich es!
            Vielen Dank! Die Links waren sehr hilfreich!

            Kommentar

            Lädt...
            X