Eingabe prüfen
Mike_
- php
0 seth0 Mike_0 seth0 Tobias Kloth0 seth
0 Tobias Kloth
hallo leute,
ich hab ein kontaktformular in php, in diesem werden vor dem absenden die eingaben geprüft. bei telefonnummer soll er aber noch prüfen ob auch nur zahlen oder ein - eingegeben wurde.
script:
if(trim($from_phone)=="") $err_text.="Bitte geben Sie Ihre Telefon-Nr. ein.<br>"; <-- hier wird geprüft ob überhaupt was eingegeben wurde.
else
if(hier müsste dann die abfrage nach zahlen oder minus kommen.
) $err_text.="Ihre Telefon-Nr. ist nicht korrekt, Zahlen oder -.<br>";
kann mir jemand helfen, oder weiss jemand ein tut ??
thx
mike
hi mike!
[telefonnummer pruefen]
das stichwort hier lautet "regulaere ausdruecke" (ok, eigentlich sind's zwei worte).
mit hilfe jener kannst du sehr bequem ueberpruefen, ob eine zeichenkette deine vorgaben erfuellt.
anleitungen fuer regulaere ausdruecke (engl. regular expressions, kurz: regexp) findest du z.b. auf
http://www.php.net/manual/en/reference.pcre.pattern.syntax.php
http://www.perldoc.com/perl5.8.4/pod/perlrequick.html
eine funktion dafuer in php ist z.b. preg_match()
http://www.php.net/manual/en/function.preg-match.php
if(preg_match("/\d+-?\d+/", $from_phone)){
echo "passt";
}else{
echo "passt nicht";
}
prost
seth
thx,
aber ich hab es ander gelöst:
if(trim($from_phone)=="") $err_text.="Bitte geben Sie Ihre Telefon-Nr. ein.<br>"; <-- Hier wird generell geprüft auf einen Eintrag
else
if(ereg("[a-z_A-Z]",$from_phone)) $err_text.="Die Telefon-Nr. ist nicht korrekt.<br>"; <-- Hier wird geprüft ob auch Zahlen oder ein Minus eingegeben wurde
Mike
hallo Mike!
ereg("[a-z_A-Z]",$from_phone)
damit pruefst du nur, ob buchstaben oder unterstriche vorkommen. andere sonderzeichen, z.b. #$%& bleiben unberuecksichtigt.
zudem sollte man anstelle von ereg besser preg_match verwenden. (zumindest verstehe ich so den hinweis auf http://www.php.net/manual/en/function.ereg.php).
beser ist also imho
if(preg_match("/^\d+-?\d+?/", $from_phone)){
echo "passt";
}else{
echo "passt nicht";
} // code leicht geaendert.
$from_phone muss folgende eigenschaften haben, um zu passen:
prost
seth
Hallo seth,
if(preg_match("/^\d+-?\d+?/", $from_phone)){
mit dem Ausdruck gibt auch die Eingabe von '333-5873dd'; ein 'passt' - du musst den Ausdruck noch mit $ am Ende des Strings "verankern" (außerdem ist das zweite Fragezeichen überflüssig).
Grüße aus Nürnberg
Tobias
hi!
if(preg_match("/^\d+-?\d+?/", $from_phone)){
du musst den Ausdruck noch mit $ am Ende des Strings "verankern" (außerdem ist das zweite Fragezeichen überflüssig).
oops, das letzte fragezeichen sollte ein dollarzeichen sein, sorry.
/^\d+-?\d+$/
prost
seth
Hallo Mike,
if(ereg("[a-z_A-Z]",$from_phone[...]<-- Hier wird geprüft ob auch Zahlen oder ein Minus eingegeben wurde
nein, du prüfst hier ob in $from_phone mindestends ein Buchstabe oder ein Unterstrich enthalten sind. Außerdem verwendest du die langsameren ereg*-Funktionen - nimm besser die preg_*-Funktionen. Um eine Meldung auszugeben, wenn in einer Variablen etwas anderes als Zahlen und Minuszeichen enthalten sind, ist sowas imho sinnvoller:
if(!preg_match('~[1]+$~',$var)){
echo 'Die Telefonnummer darf nur aus Zahlen und dem Minuszeichen bestehen';
}
ich würde aber evtl. noch Schrägstriche, das Plus und Leerzeichen zu den erlaubten Zeichen hinzufügen.
kurze Erläuterung zum regulären Ausdruck:
~ Begrenzer des regulären Ausdrucks
^ "verankert" den Ausdruck am Stringanfang
[0-9-] Eine Zeichenklasse mit Zahlen und dem Minus
+ mindestens ein Zeichen aus der Zeichenklasse vorher
$ "verankert" den Ausdruck am Stringende
~ Begrenzer
Grüße aus Nürnberg
Tobias
0-9- ↩︎