Datumseingabe überprüfen

Larnhof

Mitglied
Guten Morgen liebe Leute!
Ich habe ein Formular wo ein Benutzer eine Uhrzeit eintragen kann. Nun möchte ich bevor es in die DB gespeichert wird überprüfen ob die Uhrzeit im Formular richtig eingegeben wurde.
Format sollt so aussehen: 12:00
habe es nun so probiert:
PHP:
elseif(isset($_POST['Uhrzeitv'])) 		{
			$time=$_POST['Uhrzeitv'];
			if ( preg_match("/^(d{1,2}):(d{1,2})$/", $time, $matches) && ($matches[1] <= 24 && $matches[1] >= 0) && ($matches[2] <= 59 && $matches[2] >= 0) ) 
				{
				echo "true";
				}
			else
				{
				echo "false";
				}
		}
Ich bekomme nun immer "false" .
An was könnte es liegen?
Ps.: elseif steht deshalb weil ich noch andere Abfragen habe.

Danke im Voraus
Gruß

Ps: habe gerade gesehen das ich einen falschen Themennamen genommen habe!sorry
 
Zuletzt bearbeitet:
Wenn du den regulären Ausdruck richtig machst, reicht diese prüfung
PHP:
if (preg_match('/^(?:[01]?[0-9]{1}|2[0-4]{1}):[0-6]?[0-9]$/', $time)){
    echo 'true';
}

Aber auch das prüft noch nicht, das 24:30 keine Uhrzeit ist...

Aber warum mit regexp? php bietet doch einen guten Test an
strtotime() gibt nur einen Zeitstempfel zurück, enn er die Eingabe parsen konnte....
PHP:
if(strtotime('9:30')){
    echo 'true';
} else {
    echo 'false';
}
 
Mal davon abgesehen das ich yaslaw in jedem Punkt recht gebe will ich dir nur sagen was du falsch gemacht hast.
Deine Regex müsste so aussehen:
PHP:
preg_match("/^(\d{1,2}):(\d{1,2})$/", $time, $matches)
 
Hallo!

Ich habe zwar nicht viel Ahnung, aber.....
Wenn du den regulären Ausdruck richtig machst, reicht diese prüfung
PHP:
if (preg_match('/^(?:[01]?[0-9]{1}|2[0-4]{1}):[0-6]?[0-9]$/', $time)){
    echo 'true';
}
Aber auch das prüft noch nicht, das 24:30 keine Uhrzeit ist...
Die Uhrzeit geht ja auch von 00:00 (bzw. 0:00) bis 23:59.
Du prüfst aber bis 24:69. ;)

So sollte es eher hinkommen:
PHP:
preg_match("/^(?:[01]?[0-9]{1}|2[0-3]{1}):[0-5]?[0-9]$/", $time, $matches)
Deine Regex müsste so aussehen:
PHP:
preg_match("/^(\d{1,2}):(\d{1,2})$/", $time, $matches)
Auch hier ist ein kleiner Fehler..... hiernach wäre z.B. 23:5 auch eine gültige Uhrzeit.
Die Minuten sind aber immer zweistellig.
Daher:
PHP:
preg_match("/^(\d{1,2}):(\d{2,2})$/", $time, $matches)
Gruss Dr Dau
 
Zurück