# Uhrzeit eingabe überprüfen



## matzseesi (26. Juni 2005)

Hi Leute

Ich habe das Problem dass bei einem Formular eine Uhrzeit nach folgender Form eingegeben werden muss

hh:mm also so 22:30

ich habe dazu eine regex gemacht die aber nicht ganz funktioniert.
Da ich totaler Neuling am Gebiet Regex bin wäre es super wenn mir wer sagen kann was daran falsch ist


```
if(!eregi('[0-2][0-9]:[0-5][0-9]',$time))
{
 echo "fehler";
}
```

Grüße Matz

*edit* Klammer hinzugefügt (ist im orig Skript immer schon vorhanden gewesen)


----------



## hpvw (26. Juni 2005)

Der Ausdruck ist schon richtig, aber es fehlt eine schließende Klammer am Ende der if-Bedingung.

Gruß hpvw


----------



## matzseesi (26. Juni 2005)

sorry abtipp fehler!

die schließende Klammer ist natürlich da es geht nur um den regex ausdruck! der funktioniert so nicht!


----------



## hpvw (26. Juni 2005)

Bei mir funktioniert er.
22:30 lässt er durch, 22:70 geht daneben.
Beschreibe doch mal konkret, bei welchen Beispielen es nicht funktioniert.

Gruß hpvw


----------



## Gumbo (26. Juni 2005)

Hier noch eine genauere Version, da auch Uhrzeiten wie „25:00“ als zulässig einstufen:
	
	
	



```
<?php

	if( !(bool)preg_match('/^(?:2[0-4]|[01][0-9]):[0-5][0-9]$/', trim($time)) ) {
		echo 'Uhrzeit ungültig!';
	}

?>
```


----------



## matzseesi (26. Juni 2005)

danke 

Funktioniert prächtig


----------



## dwex (1. November 2011)

Servus Gumbo (und alle anderen mit Ahnung vom Thema),

ich muss mal diesen Thread nach vorne holen.

Ich habe mal deine RegEx für meine Zwecke "geklaut".
Leider macht diese nicht ganz das was ich "möchte".

Wenn eine Zeit von 0:10 (welche ja durchaus richtig ist) eingebe - dann bekomme ich die Info, dass die Uhrzeit falsch ist. Wenn ich 00:10 eingebe dann funktioniert es.

Wie müsste man den die RegEx umschreiben (du weist ich bin kein RegEx-"Gott") damit das auch mit 0:10 oder 1:12 etc. funktioniert?

Vielen Dank für deine Hilfe im Voraus!


----------



## Dr Dau (2. November 2011)

Hallo!



dwex hat gesagt.:


> Ich habe mal deine RegEx für meine Zwecke "geklaut".
> Leider macht diese nicht ganz das was ich "möchte".


Die RegEx ist faktisch sowieso falsch, denn es wird z.b. auch 24:10 als korrekt ermittelt. 



dwex hat gesagt.:


> Wenn eine Zeit von 0:10 (welche ja durchaus richtig ist) eingebe - dann bekomme ich die Info, dass die Uhrzeit falsch ist. Wenn ich 00:10 eingebe dann funktioniert es.


So sollte es sowohl mit 0:10 als auch mit 00:10 funktionieren:

```
<?php
$time="21:10";
if( !(bool)preg_match('/^(?:2[0-3]||(([0-9]||0[0-9])||1[0-9])):[0-5][0-9]$/', trim($time)) ) {
    echo "Uhrzeit ungültig!\n";
}
?>
```



dwex hat gesagt.:


> [..] du weist ich bin kein RegEx-"Gott" [..]


Ich auch nicht. 
Aber eine stichprobenartige Überprüfung meines Codes hat ergeben dass alles von 0:00 (oder auch 00:00) bis 23:59 eigentlich als korrekt ermittelt werden sollte.
Hohes Gericht, irgendwelche Einwände?

Gruss Dr Dau


----------



## dwex (2. November 2011)

Super - Danke!

Das funktioniert bestens.


----------

