Tach!
dd-mm-yyyy
Muss es zwingend dieses Format sein, oder reicht es eigentlich auch, wenn eine Menge Formate erkannt werden?
ja. Es muß zwingend dieses Format sein, ansonsten versucht jemand, mich hereinzulegen.
Dann nimm DateTime::createFromFormat(). Das lässt aber auch einstellige Werte durch. Wenn die unbedingt erkannt werden müssen, dann nimm einen ganz einfachen Regex vorher. Falsche aber korrekt formatierte Datümer werden beim Parsen nicht erkannt. Stattdessen rechnet PHP sie in den nächstmöglichen Tag um. Also der 31.2. wird dann der 2. oder 3.3. An dieser Stelle würde ich mich nicht weiter darum kümmern, ob da ein gültiges Datum eingegeben wurde. Es ist sicher auch möglich, im Sinne deines Anwendungsfalles unsinnige aber ansonsten richtige Datumse einzugeben, die du nicht automatisch erkennen kannst - oder nur mit überproportionalem Aufwand. Jahre jenseits unserer Lebenserwartung beispielsweise wären nach deiner Definition korrekt, aber auch sinnvoll?
dedlfix.