Ereg PHP
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
basteln
break
code
dank
eingabe
form
jemand
nummer
nutz
nutzen
passen
person
regeln
stellen
switch
verwenden
warnung
zahl
zeichen
ziffer
-
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? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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 -
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... -
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 -
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 -
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 -
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})?$/ -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage