kostenloser Webspace werbefrei: lima-city


Ereg PHP

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    m****r

    Hi,

    ich selber kann keine RegEx, benötige sie aber gerade. Ich muss Eingaben validieren und wollte mir das ungefähr so aufbauen:

    $Error = "";
        switch ($_POST['Name'][$i]) {
          case "":
            $Error .= "Bitte füllen sie den Namen von Person $i aus!|";
            break;
          case ereg("/^[a-zA-Z]+$/",$_POST['Name'][$i]):
            $Error .= "Der Name von Person $i enthält ungültige Zeichen!|";
            break;
        }


    Wie ihr seht möchte ich für $_POST['Name'][$i] nur klein und Großbuchstaben zulassen. Ich geb's ehrlich zu - die RegEx hab ich aus dem Internet kopiert. Funktionieren tut sie leider nicht. Was mache ich da falsch?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. a) Nutze statt ereg preg_match
    b) Das es nicht geht, liegt am switch-case. Das kannst du in diesem Fall nicht nutzen. Du musst if - elseif - else nutzen :)
  4. Autor dieses Themas

    m****r

    nikic schrieb:
    a) Nutze statt ereg preg_match
    b) Das es nicht geht, liegt am switch-case. Das kannst du in diesem Fall nicht nutzen. Du musst if - elseif - else nutzen :)


    WIeso preg_match anstatt ereg?

    EDIT: Ah, ok. Sehe grade die Deprecated-Warnungen. Wusste ich garnicht. ;)

    EDIT 2:

    Ok, ich erhalte bei einer Eingabe von "d" mit

    elseif(preg_match("/^[a-zA-Z]+$/",$_POST['Name'][$i])) {
          $Error .= "Der Name von Person $i enthält ungültige Zeichen!|";
        }


    trotzdem, dass es angeblich ungültig sei. Da ich mich nicht mit RegEx auskenne muss ich nachfragen - weiß jemand wieso?

    Beitrag zuletzt geändert: 28.4.2010 20:38:26 von midwar
  5. Ich denke du musst das preg_match verneinen, dann funktioniert es:

    elseif(!preg_match("/^[a-zA-Z]+$/",$_POST['Name'][$i])) {
    $Error .= "Der Name von Person $i enthält ungültige Zeichen!|";
    }
  6. Autor dieses Themas

    m****r

    joejoejoe schrieb:
    Ich denke du musst das preg_match verneinen, dann funktioniert es:

    elseif(!preg_match("/^[a-zA-Z]+$/",$_POST['Name'][$i])) {
    $Error .= "Der Name von Person $i enthält ungültige Zeichen!|";
    }


    Ah, stimmt. Was ich immer übersehe...

    Da ich mich mit RegEx ja nicht auskenne, muss ich aber die dritte Frage hinterherschubsen:

    Gibt es hier jemanden, der mir ein RegEx für ZAHL + "W" + ZAHL basteln kann? Die beiden Zahlen dürfen jeweils nur 1 Zeichen lang sein...
  7. #^[0-9]W[0-9]$#


    Oder müssen die Zahlen genau die selben sein?
  8. Autor dieses Themas

    m****r

    nikic schrieb:
    #^[0-9]W[0-9]$#


    Oder müssen die Zahlen genau die selben sein?


    Tut mir leid, ich habe vergessen, dass hinter der zweiten Zahl noch entweder "+ZAHL" oder "-ZAHL" kommt. Also z.B:

    3W6+5 oder
    2W9-3

    Nein, die Zahlen müssen nicht die gleichen sein. ;)

    Danke schonmal nikic
  9. Statt Zahl kannst du auch immer \d (DIGIT= ZAHL) verwenden.

    #^\dW\d(\+|\-)\d$#
  10. Autor dieses Themas

    m****r

    joejoejoe schrieb:
    Statt Zahl kannst du auch immer \d (DIGIT= ZAHL) verwenden.

    #^\dW\d(\+|\-)\d$#


    Grmpf, ich danke euch für eure Bemühungen, aber nachdem ich gerade sämtliche Midgard Regeln zu Rate genommen habe, ist das leider immer noch nicht die endgültige Form, wie mir gerade aufgefallen ist.

    Die entgültige Form von dem RegEx, den ich brauche ist folgende:

    ZAHL (maximal 2 Stellen kann aber auch 1 mindestens aber eine) + "W" + ZAHL (maximal 2 Stellen kann aber auch 1 mindestens aber eine) + EVENTUELL "+" oder EVENTUELL "-" und dann nochmal eine Zahl mit mindestens 1 aber maximal 2 Ziffern.

    Könnte mir das noch jemand basteln? :D

    Beispiele wären:

    3W6+2
    10W14-3
    2W3
    4W6+1

    etc...

    Beitrag zuletzt geändert: 30.4.2010 22:26:10 von midwar
  11. Das ist auch einfach:

    /^\d{1,2}W\d{1,2}(\+|\-)?\d{1,2}$/

    sollte passen

    Beitrag zuletzt geändert: 30.4.2010 23:41:51 von nemoinho
  12. Autor dieses Themas

    m****r

    nemoinho schrieb:
    Das ist auch einfach:

    /^\d{1,2}W\d{1,2}(\+|\-)?\d{1,2}$/

    sollte passen


    Nicht ganz, die 1-2 stellige Zahl nach dem optionalen + oder - ist ebenfalls optional, deswegen hab ich das Fragezeichen auch dahinter eingefügt:

    /^\d{1,2}W\d{1,2}(\+|\-)?(\d{1,2})?$/
  13. Kann die Nummer etwa auch 3W6+ sein? Wenn nicht, dann so:
    /^\d{1,2}W\d{1,2}(?:[-+]\d{1,2})?$/
  14. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!