Mailinglisten-Archive |
Andre Lampe wrote: > Ich möchte Datumseingaben in drei Varianten ermöglichen. Wenn die > "deutschen" Datumsformate DD.MM.YYYY oder DD.MM.YY eingegeben werden, > soll das Datum in YYYY-MM-DD umgeschrieben werden. > [Code] > > Es wird bei einem englischen Datumsformat aber "Datum Neu: 2008-7-20" > ausgegeben. Das Datum scheint bei der zweiten ereg-Abfrage erkannt zu > werden und wird dann falsch formatiert. > > Was mache ich falsch? Hallo Andre. Der Punkt ist ein Platzhalter für ein beliebiges Zeichen. Da im Ausdruck weder Begrenzer für Anfang und Ende vorhanden sind, wird natürlich nicht das Gewünschte gefunden. Den Punkt musst du mit einem Backslash entwerten. Versuchs mal hiermit: $date = "27.08.07"; if (preg_match("=^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{4})$=", $date, $regs)) { $db_date = $regs[3].'-'.$regs[2].'-'.$regs[1]; } elseif (preg_match("=^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{2})$=", $date, $regs)) { $db_date = '20'.$regs[3].'-'.$regs[2].'-'.$regs[1]; } else { $db_date = $date; } echo "Datum Neu: ".$db_date; Wobei das Datum dann natürlich nicht valide sein muss. Das solltest Du noch mit checkdate[1] o.ä. überprüfen. Gruß Alex [1] http://www.php.net/manual/en/function.checkdate.php
php::bar PHP Wiki - Listenarchive