Problem mit preg_match

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

  • Problem mit preg_match

    Hallo liebe php-coder!

    Ich brauche eine Möglichkeit wie man für eine Variable nur die Zeichen A-Z, a-z, 0-9 und - zulässt.
    Beim googlen habe ich die Möglichkeit mit preg_match gefunden, jedoch lässt diese Funktion bei mir sowohl offline als auch online Sonderzeichen wie %$ usw. durchgehen.

    Ich poste mal den Code:
    PHP-Code:
    if(preg_match("/[^a-zA-Z0-9_-]/u"$_POST['uname'])){
      echo 
    "Username gültig!";
    } else {
      echo 
    "Du darfst für deinen Usernamen nur die Zeichen a-z, A-Z, 0-9 und - benutzen";

    Wie kriege ich es hin, dass wirklich nur dann "Username gültig!" ausgegeben wird, wenn auch wirklich nur die Zeichen A-Z, a-z, 0-9 und - vorhanden sind und keine Sonderzeichen?

  • #2
    Hallo!

    Probiere mal das hier!

    PHP-Code:
    !preg_match("#^([0-9a-z_-]+)$#i"
    Das i ist ein Moifier und macht keinen Unterschied zwischen Groß und Kleinschreibung
    Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
    http://www.lit-web.de

    Kommentar


    • #3
      PHP-Code:
      if(preg_match("/^[a-zA-Z0-9_-]$/"$_POST['uname'])){ 
      ^ als erstes Zeichen einer Zeichenklasse verneint die Klasse. Du willst aber, dass die Zeichen der Klasse von Anfang bis Ende zutreffen. Das ^ ausserhalb der Klasse heisst Anfang vom String und $ heisst Ende
      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

      Kommentar


      • #4
        Danke für eure schnelle Antwort.

        Das Beispiel von litterauspirna funktioniert fast, denn es wird noch das Zeichen _ durchgelassen was eigentlich nicht sein soll.

        Ich probier jetzt mal jahlives Beispiel aus.

        Kommentar


        • #5
          Dann mache doch aus dem match das Zeichen einfach raus und da wird das nicht mehr durchgelassen. Es wird ja alles das was dort drin angegeben wird durchgelassen!
          Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
          http://www.lit-web.de

          Kommentar


          • #6
            Dann nimm _ aus der Klasse der erlaubten Zeichen raus
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              Hmm bei jahlives Beispiel gibt er die fehlermeldung auch beim - aus... Also beide Beispiele funktionieren nicht ganz

              Kommentar


              • #8
                ok es funktioniert jetzt
                DANKE FÜR EURE HILFE

                Kommentar

                Lädt...
                X