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
Freigeben: 2024-12-15 11:50:11
Original
411 Leute haben es durchsucht

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)
    // ...
Nach dem Login kopieren
Nach dem Login kopieren

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)
    // ...
Nach dem Login kopieren
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage