umlaut sonderzeichen verhinderung geht nicht richtig ;(

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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";

    ?>
    Last edited by Milian; 21-01-2005, 00:20.

    Comment


    • #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 ?
      Last edited by D-Style; 21-01-2005, 00:38.
      ps.: jeder hat mal klein angefangen

      Comment


      • #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

        Comment


        • #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!
          Last edited by Sh4mE; 12-04-2007, 21:57.

          Comment


          • #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

            Comment


            • #7
              Ist überflüssig

              Comment

              Working...
              X