Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Datumsvalidierung: Kann der reguläre Ausdruck nicht übereinstimmen?

PHP-Datumsvalidierung: Kann der reguläre Ausdruck nicht übereinstimmen?

DDD
DDDOriginal
2024-10-23 06:08:30240Durchsuche

PHP Date Validation: Can't the Regular Expression Match?

PHP-Datumsvalidierung: Fehlerbehebung bei einem regulären Ausdruck

Sie versuchen, Datumsangaben in PHP mithilfe eines regulären Ausdrucks zu validieren, aber das gelingt Ihnen nicht auf Probleme stoßen. Lassen Sie uns Ihren Code analysieren und eine robustere Lösung anbieten.

Der von Ihnen bereitgestellte reguläre Ausdruck, %A(0[1-9]|1[012])[- /.](0[1-9] |[12][0-9]|3[01])[- /.](19|20)ddz% scheint für die Validierung des MM/TT/JJJJ-Formats korrekt zu sein. Der Code, den Sie zum Abgleichen des Datums verwenden, ist jedoch falsch. Sie weisen das Ergebnis von preg_match $_POST['birthday'] zu, was nicht das ist, was Sie beabsichtigt haben.

Verbesserte Validierung mit checkdate

Anstelle der Verwendung von a Wenn Sie einen regulären Ausdruck verwenden, können Sie den Validierungsprozess vereinfachen, indem Sie die Checkdate-Funktion von PHP nutzen. Diese Funktion verwendet Monat, Tag und Jahr als separate Parameter und gibt einen booleschen Wert zurück, der angibt, ob das Datum gültig ist oder nicht.

<code class="php">$test_date = '03/22/2010';
$test_arr = explode('/', $test_date);
if (checkdate($test_arr[0], $test_arr[1], $test_arr[2])) {
    // valid date ...
}</code>

In diesem Code konvertieren wir die /-getrennte Datumszeichenfolge in ein Array aus Monats-, Tages- und Jahreskomponenten. Anschließend übergeben wir diese Komponenten an checkdate, um die Gültigkeit des Datums zu überprüfen.

Zusätzliche Ebene der Eingabevalidierung

Für eine verbesserte Eingabevalidierung berücksichtigen Sie den folgenden Code:

<code class="php">$test_date = '03/22/2010';
$test_arr = explode('/', $test_date);
if (count($test_arr) == 3) {
    if (checkdate($test_arr[0], $test_arr[1], $test_arr[2])) {
        // valid date ...
    } else {
        // problem with dates ...
    }
} else {
    // problem with input ...
}</code>

Dieser Ansatz prüft zunächst, ob die Eingabezeichenfolge genau drei Komponenten (Monat, Tag, Jahr) enthält, indem die Elemente in $test_arr gezählt werden. Wenn die Anzahl von 3 abweicht, deutet dies auf einen möglichen Fehler in der Eingabe hin. Anschließend validiert es das Datum mit checkdate.

Das obige ist der detaillierte Inhalt vonPHP-Datumsvalidierung: Kann der reguläre Ausdruck nicht übereinstimmen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn