Heim >Backend-Entwicklung >PHP-Tutorial >Warum kann mein PHP-Regex ein ISO-Datumsformat nicht validieren?

Warum kann mein PHP-Regex ein ISO-Datumsformat nicht validieren?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-15 11:50:11415Durchsuche

Why is my PHP regex failing to validate an ISO date format?

Regex kann ISO-Datumsformat nicht validieren

Frage:

Warum ist das nicht der Fall? folgt einem regulären Ausdruck, der mit Datumsangaben im ISO-Stil übereinstimmen soll und funktioniert als erwartet?

if(preg_match('/^([0-9]{4})-([0-9]{2})-([0-9]{2}) ([1-2]{1})([0-9]{1}):([0-5]{1})([0-9]{1}):([0-5]{1})([0-9]{1})$/', $date) >= 1)
    // ...

Antwort:

Während der reguläre Ausdruck selbst gültig ist, liegt das Problem hier in der Verwendung von Schrägstrichen " /" als Trennzeichen. PHP erfordert doppelte Anführungszeichen " oder einfache Anführungszeichen ' als Trennzeichen für reguläre Ausdrücke, keine Schrägstriche.

Um dieses Problem zu beheben, ersetzen Sie die Schrägstriche durch doppelte Anführungszeichen:

if(preg_match('/^([0-9]{4})-([0-9]{2})-([0-9]{2}) ([1-2]{1})([0-9]{1}):([0-5]{1})([0-9]{1}):([0-5]{1})([0-9]{1})$/', $date) >= 1)
    // ...

Jetzt die regulären Der Ausdruck stimmt korrekt mit Datumsangaben im ISO-Stil überein.

Vorteile der Verwendung von DateTime Klasse:

Obwohl der korrigierte reguläre Ausdruck ISO-Daten validiert, lohnt es sich, die DateTime-Klasse für die Validierung und Manipulation von Datum und Uhrzeit in Betracht zu ziehen. Die DateTime-Klasse ist umfassender und kann ein breites Spektrum an Datums- und Uhrzeitangaben verarbeiten Zeitformate.

Das folgende Beispiel zeigt, wie die DateTime-Klasse verwendet wird, um ein Datum im ISO-Stil zu validieren:

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

Das obige ist der detaillierte Inhalt vonWarum kann mein PHP-Regex ein ISO-Datumsformat nicht validieren?. 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