Heim >Backend-Entwicklung >PHP-Tutorial >Warum schlägt mein regulärer PHP-ISO-Datumsausdruck fehl und wie kann ich das Problem beheben?

Warum schlägt mein regulärer PHP-ISO-Datumsausdruck fehl und wie kann ich das Problem beheben?

Linda Hamilton
Linda HamiltonOriginal
2024-12-29 12:22:10419Durchsuche

Why is My PHP ISO Date Regular Expression Failing, and How Can I Fix It?

Warum schlägt mein ISO-Datumsmusterabgleich fehl?

Ihr bereitgestellter regulärer Ausdruck stimmt mit Datumsangaben im ISO-Stil aufgrund fehlender Vorwärtsdaten nicht korrekt überein Schrägstriche („/“) am Anfang und Ende des Musters. Diese Trennzeichen sind in der Regex-Syntax von PHP von entscheidender Bedeutung. Das korrigierte Muster sollte wie folgt aussehen:

/^(?P<year>[0-9]{4})-(?P<month>[0-9]{2})-(?P<day>[0-9]{2}) (?P<hour>[1-2]{1}\d{1}):(?P<min>[0-5]{1}\d{1}):(?P<sec>[0-5]{1}\d{1})$/

Dieses Muster definiert sechs Erfassungsgruppen für Jahr, Monat, Tag, Stunde, Minute und Sekunde.

Alternativer Ansatz: Verwendung von DateTime Klasse

Während die Verwendung von Regex eine Option sein kann, ist die Verwendung von PHPs DateTime eine elegantere Lösung Klasse:

function validateDate($date, $format = 'Y-m-d H:i:s')
{
    $d = DateTime::createFromFormat($format, $date);
    return $d && $d->format($format) == $date;
}

Diese Funktion akzeptiert eine Datumszeichenfolge und ein optionales Format. Es verwendet die Methode „createFromFormat“, um ein DateTime-Objekt zu erstellen und prüft, ob das generierte Objekt gültig ist und mit dem Originaldatum übereinstimmt.

Die Funktion „validateDate“ bietet eine robustere und vielseitigere Möglichkeit, Datumsangaben zu validieren. Es unterstützt eine Vielzahl von Formaten und kann Daten mit unterschiedlichem Granularitätsgrad validieren.

Das obige ist der detaillierte Inhalt vonWarum schlägt mein regulärer PHP-ISO-Datumsausdruck fehl und wie kann ich das Problem beheben?. 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