Rolf B: deustches Datum per PHP überprüfen

Beitrag lesen

Hallo Bernhard,

das ist eine merkwürdige Frage. Du bekommst vom Browser einen String geschickt (in $_POST oder $_GET). Den musst Du für checkdate ohnehin erstmal zerlegen und in Zahlen umwandeln, bevor Du checkdate nutzen kannst.

checkdate($_POST['datum'])

würde ohnehin nicht funktionieren.

Eine einfache Möglichkeit der Prüfung ist date_create_from_format.

$datum = date_create_from_format("d.m.Y", $_POST['datum']);
if ($datum === FALSE) {
   // falsches Datum, Fehlermeldung
}

Du musst das Muster d.m.Y exakt wie angegeben verwenden, das steht für 2-stelligen Tag, 2-stelligen Monat und 4-stelliges Jahr. Kleiner Nachteil: die Eingabe "01.13.2020" wird akzeptiert und als 01.01.2021 gedeutet. Und die Eingabe "17.3.2020" wird abgewiesen.

Wenn Du das so nicht brauchen kannst, dann musst Du die Eingabe über eine Regex (preg_match) oder mit String-Operationen (substr-Funktion) zerlegen und die Teile in Zahlen umwandeln. Die kannst Du dann in der benötigten Reihenfolge an checkdate übergeben.

Tipps:

  • Zugriff auf einzelne Zeichen geht mit der Index-Schreibweise: $a[2] liefert das dritte Zeichen im String (Indexe beginnen bei 0)
  • Prüfen, ob ein String eine Zahl ist, geht mit der Funktion is_int (oder is_integer, die sind synonym)
  • Umwandeln eines Strings in eine Zahl geht mit intval. intval taugt nicht zum Prüfen auf Zahlen, weil es abbricht wenn keine Ziffer mehr kommt. Bspw. würde "5a" als 5 gedeutet.

Rolf

--
sumpsi - posui - obstruxi