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 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!