Ich verwende offensichtlich filter_var () nicht korrekt. Ich muss überprüfen, ob der Benutzer ein gültiges Datum in der Form "TT / MM / JJJJ" eingegeben hat.
Dies gibt einfach zurück, was ich als Datum weitergegeben habe, während ich erwartete, dass es entweder das Datum oder 0 / null / FALSE zurückgibt, falls die Eingabezeichenfolge nicht wie ein Datum aussieht:
%Vor%Wenn jemand anderes diese Funktion verwendet, um Daten zu überprüfen, was mache ich falsch? Soll ich eine andere Funktion verwenden, um Formularfelder zu validieren?
Danke.
Die Regex stimmt überein, weil Sie nur das Muster irgendwo in der Zeichenfolge benötigen. Was Sie wollen, ist nur das Muster und nichts anderes. Fügen Sie also ^
und $
hinzu.
Beachten Sie, dass dies nicht bedeutet, dass der Wert ein gültiges Datum ist. 99/99/9999
wird diesen Test bestehen. Ich würde verwenden:
Versuchen Sie, den Anfang und das Ende Ihrer Regex so einzustellen:
%Vor%Sie haben viele Antworten erhalten, die darauf hinwiesen, dass die RegEx eine Antwort auf 99/99/9999 erlauben würde. Das kann gelöst werden, indem ein wenig mehr zur RegEx hinzugefügt wird. Wenn Sie wissen, dass Sie nie ein Datum außerhalb der Jahre 1900-2099 haben werden ... können Sie eine RegEx wie folgt verwenden:
%Vor%Damit wird ein Datum dieses Formats bestätigt: TT / MM / JJJJ
Zwischen: 01/01/1900 - 31/12/2099
Wenn Sie mehr Jahre brauchen, fügen Sie sie einfach am Ende hinzu. | 21 | 22 | 23 | 24 | 25 (würde es bis zum Jahr 2599 verlängern.)