Mailinglisten-Archive |
Hallo Christian! Dein Problem ist zwar mittlerweile anscheinend gelöst, aber trotzdem hier noch ein weiterer Vorschlag. > Die User haben in einen Formular die Möglichkeit ein Datum > einzugeben, und > können zwischen 4 Formaten wählen: > > TTMMJJ, TTMMJJJJ, TT.MM.JJ, TT.MM.JJJJ > > Eine Methode meiner Klasse soll den übergebenen String überprüfen und > ledeglich formatieren und falls der übergebene String keine > Übereinstimmung > findet false zurückliefern. Folgender Ausdruck erschlägt alle Eingaben auf einmal: ^(0?[1-9]|1[0-9]|2[0-9]|3[01])\.?(0?[1-9]|1[012]|)\.?((19|2[0-9])?([0-9]{2}) )$ Wenn Du preg_match (übrigens schneller als ereg) darauf anwendest, bekommst Du ein Array zurück, welches in $a[1] den Tag, $a[2] den Monat und $a[3] das Jahr beinhaltet. Beispiel: $sInput = '22.12.2007'; $sRegex = '^(0?[1-9]|1[0-9]|2[0-9]|3[01])\.?(0?[1-9]|1[012]|)\.?((19|2[0-9])?([0-9]{2} ))$'; preg_match($sRegex, $sInput, $aMatch); print_r($aMatch); Sollte sowas ergeben: $aMatch[1] = '22'; $aMatch[1] = '12'; $aMatch[1] = '2007'; Du musst dann noch die Stringlängen (vor allem vom Jahr) prüfen und ggf. auf vier Stellen erweitern. Superprogramm zum Regex testen: http://weitz.de/regex-coach/ Hth, Florian
php::bar PHP Wiki - Listenarchive