umlaut sonderzeichen verhinderung geht nicht richtig ;(

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

  • umlaut sonderzeichen verhinderung geht nicht richtig ;(

    Hallo,

    habe in meinem formular versucht die sonderzeichen zu verbieten wie folgt:

    PHP-Code:

    if(preg_match("/^[a-z0-9]/i"$UserName)) { } else {
      
    $fehler 1;
      
    $fehlermeldung '<b><span style="color:red;">
    Bitte keine Sonderzeichen im Usernamen verwenden.</span></b><br><br>'

      } 
    nur leider funktioniert das nicht richtig sondern nur wenn ein sonderzeichen am anfang ist. Wenn es irgendwo später kommt scheint es durchzukommen...
    habe schon viel dazu hier im forum gelesen, aber habe es bisher leider nicht selbst hinbekommen, würde mich freuen wenn mir jemand helfen könnte..

    es soll zum schluß nur "a-z" "0-9" und "-" sowie "_" erlaubt sein.
    ps.: jeder hat mal klein angefangen

  • #2
    /^[a-z0-9]/i
    Sucht wegen dem ^ nach einem Zeichen mit einem Buchstaben, a-z oder nach einer Zahl 0-9 und zwar Casesensitive durch das i.
    Also das ^ wegnehmen?

    Also, so würd ich es machen:
    PHP-Code:
    <?

    $str = "acd0123";

    if(!preg_match("/^[a-z0-9\-_]+$/s",$str))
    echo "falsch";
    else 
    echo "richtig";

    ?>
    Zuletzt geändert von Milian; 21.01.2005, 01:20.

    Kommentar


    • #3
      habs mal weggenommen.

      hat aber eigentlich nix geändert..

      älohaä zb kann ich noch reggn eignetlich alles was mit einem verbotenen zeichen anfängt und danach irgend ein anderes hat...

      das einzige was nun nicht geht sind namen die nur aus den zeichen die net gehen sollen...

      edit:

      habs mal gemacht sieht nun so aus:

      PHP-Code:
      $str "acd0123";

        if(!
      preg_match("/^[a-z0-9-_]+$/s",$str)) { 
        
      $fehler 1;
        
      $fehlermeldung '<b><span style="color:red;">
      Bitte keine Sonderzeichen im Usernamen verwenden.</span></b><br><br>'

        } 
      allerdings hat sich dadurch eigentlich nichts geändert, ich kann immernoch zb argäas registrieren..

      nur so ne nebenfrage, wieso steht im str grade acd0123 ?
      Zuletzt geändert von D-Style; 21.01.2005, 01:38.
      ps.: jeder hat mal klein angefangen

      Kommentar


      • #4
        sry mein fehler habe statt $UserName nun dein $str dringehabt ^^
        mit dem $userName geht es glaube ich jetzt !!

        Ich danke dir vielmals !!
        ps.: jeder hat mal klein angefangen

        Kommentar


        • #5
          PHP-Code:
          <?

          $str = "äase"; // Der Teststring, also was überprüft werden soll,
          //bei dir ist dass dann $_POST[...]

          /*
          überprüft, ob der String startet(^), aus min. einem oder aber
          unendlichen vielen Zeichen(+) des formats: a-z, 0-9, -,_
          besteht([a-z0-9\-_])und dann endet. ($)
          Er kann also nur aus Zeichen a-z, 0-9, - und _ bestehen.
          */

          if(!preg_match("/^[a-z0-9\-_]+$/s",$str))
          echo "falsch";
          else 
          echo "richtig";

          ?>
          Hier nochmal leicht abgeändert:
          PHP-Code:
          <?

          $str = array("absasdfkljadföadkfj","123489120.","123asdf","123_asdf-123"," as");

          foreach ($str as $v)
          {
              echo $v." wird ";
          if(!preg_match("/^[a-z0-9\-_]+$/s",$v))
          echo "nicht akzeptiert!\n";
          else 
          echo "akzeptiert!\n";
          }

          ?>
          liefert:
          Code:
          absasdfkljadföadkfj wird nicht akzeptiert!
          123489120. wird nicht akzeptiert!
          123asdf wird akzeptiert!
          123_asdf-123 wird akzeptiert!
           as wird nicht akzeptiert!
          Zuletzt geändert von Sh4mE; 12.04.2007, 22:57.

          Kommentar


          • #6
            ist irgendwie kompliziert gemacht das ganze..

            hab ihn noch ein bisschen verändert:

            PHP-Code:
            if(!preg_match("/^[a-z0-9-_]+$/is",$UserName)) 
            damit auch großbuchstabn gehen

            was beutet genau das kleine s hinter dem / ?

            ich hab zwar gelesen:
            --
            Der s-Modifier veranlasst den Parser dazu, die Zeichenkette, auf die der reguläre Ausdruck angewendet wird, in einzelne Zeilen zu unterteilen - das Pattern wird hierbei also nicht auf die ganze Zeichenkette bezogen, sondern jede Zeile einzeln behandelt
            --
            aber das sagt mir ehrlich gesagt nix ^^
            ps.: jeder hat mal klein angefangen

            Kommentar


            • #7
              Ist überflüssig

              Kommentar

              Lädt...
              X