Hi!
Ein einfacher \d{4}-\d{1,2}-\d{1,2} scheitert bereits, weil es ein Datum wie z.B. 2011-13-13 nicht gibt.
„[…] und diese [Bestandteile] dann mit checkdate() prüfen.“
Ja, aber damit kommt eben Mist zustande wenn dann ein 2001-0101 daherkommt - was bei der dafür gedachten Funktion schon abgefangen wird und einwandfrei hinhaut:
Jetzt wechselst du aber schnell das Thema. Geht es dir nun um eine Plausibiltätsprüfung der Bestandteile? Da kommst du mit strptime() allein auch nicht weiter. Oder geht es dir um das Extrahieren der Bestandteile bei falscher/unvorhergesehener Schreibweise? Man muss da auch einfach mal aufgeben können. Wenn der Anwender Mist eingibt, muss er sich nicht wundern, wenn der nicht doch noch irgendwie interpretiert sondern abgelehnt wird. Bei blöden Schreibweisen scheitern alle drei bisher genannten Lösungen (explode(), strptime(), RegExp) - die einen früher, die anderen später.
Lo!