Das Escapen von Anführungszeichen im Text sollte nicht notwendig sein. " ist für Code; im Text sollte das Zeichen nicht vorkommen, sondern „ und “ (im Deutschen).
Konsequent warst du auch nicht.
LLAP 🖖
Dann eben so:
<?php
$dateFormat = 'd.m.Y'; #Format des Inputs
$s='2.12.2020'; # Der Input
$sNotBefore = '01.01.2020'; # Nicht vor
$sNotAfter = '31.12.2021'; # Nicht nach
#Zerlegen des Datums:
list( $d, $m, $y ) = explode( '.', $s, 3 );
#checkdate prüft formale Richtigkeit:
if ( checkdate ($m , $d , $y ) ) {
echo "Oha : Das Datum „${s}“ ist möglicherweise richtig und gültig."
. PHP_EOL
. " ⟹ Ich prüfe mal weiter..."
. PHP_EOL;
#Für die nachfolgenden Vergleiche werden die Strings in ein DateTime-Objekt umgewandelt:
$d = date_create_from_format( $dateFormat, $s );
$dNotBefore = date_create_from_format( $dateFormat, $sNotBefore );
$dNotAfter = date_create_from_format( $dateFormat, $sNotAfter );
# DieseDateTime-Objekte kann man vergleichen:
if ( $d > $dNotAfter ) {
echo "Schade. Das Datum „${s}“ sah gültig aus, liegt aber nach dem $sNotAfter." . PHP_EOL;
} elseif ( $d < $dNotBefore ) {
echo "Schade: Das Datum „${s}“ sah gültig aus, liegt aber vor dem $sNotBefore." . PHP_EOL;
} else {
echo "Gut : Gültiges Datum „${s}“ zwischen (einschließlich) $sNotBefore und $sNotAfter.". PHP_EOL;
}
} else {
echo "Ochnee. Das angebliche Datum „${s}“ ist schlicht ungültig." . PHP_EOL;
}