php regex

Hi !

Ich habe folgendes einfaches Probelem:
Ich will einen Datumsstring auf Gültigkeit prüfen.
So sieht der String aus: 2007-01-01-00-00
Jahr-Monat-Tag-Stunde-Minute.

probiert hab ich das so
PHP:
<?php
echo preg_match("/[0-9]-[0-9]-[0-9]-[0-9]-[0-9]/","2007-01-01-00-00");
?>

Funktioniert sowieso nicht richtig... Ich hab nur kaum Erfahrung mit regexs. Kann mir jemand zeigen wie das richtig geht. Hab grad keine und Lust und Zeit mich näher mit dem Thema zu beschäftigen auch wenn es vllt wichtig wäre.
 
hi

du hast dich bei der regexp nur ein bisschen vertan:

Code:
echo preg_match("/[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]/","2007-01-01-00-00");

[0-9] definiert _eine_ Ziffer von 0 bis 9. willst du das jahr abfragen, brauchst du natürlich vier solcher Blöcke

mfg
vsip
 
oder
PHP:
preg_match("/^[0-9]{4,4}-[0-9]{2,2}-[0-9]{2,2}-[0-9]{2,2}-[0-9]{2,2}$/","2007-01-01-00-00");
In den geschweiften Klammern wird Minimal- und Maximal-Anzahl angegeben.
Außerdem habe ich noch ^ und $ angegeben, welche für Suchmuster Anfang und Ende stehen. Sonst wäre "foo-2007-01-01-00-00-bar" auch true.
 
wenn du Testen willst, ob die Eingaben auch korrekt sind würde ich folgendermaßen vorgehen. Du explodest den String mit - und prüfst bei den ersten drei Arrayeinheiten mit checkdate ob es ein korrektes Datum ist. Für die Zeit kannst du ja einfach prüfen ob es der Stunde kleiner als 24 und die Minuten kleiner als 60 sind.
 
Original von Mackz
In den geschweiften Klammern wird Minimal- und Maximal-Anzahl angegeben.
Da die beiden Werte hier aber immer identisch sind, genügt auch eine verkürzte Schreibweise:

PHP:
preg_match ( '/^\d{4}-\d{2}-\d{2}-\d{2}-\d{2}$/', '2007-01-01-00-00' );

Das ändert natürlich nichts daran, dass das angegebene Datum dennoch sinnfrei sein kann. "2452-46-99-87-72" wäre nämlich eine gültige Angabe für die RegEx, aber zur Datumsauswertung völliger Nonsens (siehe sp!ns Kommentar).
 
Vielen Dank für eure nützlichen Antworten. Ich bin mir jetzt schon sicher, dass ich irgendwann die RegularExpressions lernen muss. Diesmal bin ich noch einfach davon gekommen. :D
 
Zurück
Oben