Heim > Backend-Entwicklung > PHP-Tutorial > Warum stimmt mein PHP ISO-Datum mit regulären Ausdrücken nicht überein?

Warum stimmt mein PHP ISO-Datum mit regulären Ausdrücken nicht überein?

DDD
Freigeben: 2024-12-13 05:39:08
Original
610 Leute haben es durchsucht

Why Isn't My PHP ISO Date Regular Expression Matching?

Warum stimmt mein ISO-Datumsmuster nicht überein?

Der angegebene reguläre Ausdruck:

/^([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})$/
Nach dem Login kopieren

ist entworfen um Datumsangaben im ISO-Stil im Format „JJJJ-MM-TT HH:MM:SS“ abzugleichen. Es wird jedoch „false“ zurückgegeben, obwohl die Kriterien erfüllt sind. Das Problem liegt in den Schrägstrichen (/), die den Ausdruck einschließen.

PHP-Trennzeichen für reguläre Ausdrücke

In PHP müssen reguläre Ausdrücke in Trennzeichen eingeschlossen werden, typischerweise Schrägstriche (/ ), aber auch doppelte Anführungszeichen (") können verwendet werden. Das /-Trennzeichen wird verwendet, um den Anfang und das Ende eines regulären Ausdrucks zu definieren und um Konflikte mit anderen Sonderausdrücken zu verhindern Zeichen innerhalb des Ausdrucks.

Problem lösen

Um das Problem zu beheben, stellen Sie Folgendes sicher:

  1. Korrekte Trennzeichen: Verwenden Sie doppelte Anführungszeichen ("), um den regulären Ausdruck einzuschließen Text:
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
  1. Einfache Anführungszeichen innerhalb des Ausdrucks: Wenn Sie einfache Anführungszeichen innerhalb des regulären Ausdrucks verwenden müssen, maskieren Sie diese mit einem Backslash ():
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

Alternative Option mit DateTime Klasse

Anstatt einen regulären Ausdruck zu verwenden, sollten Sie die Verwendung der PHP-DateTime-Klasse in Betracht ziehen, die robustere und zuverlässigere Funktionen zur Datumsvalidierung und -manipulation bietet:

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

Diese Funktion gibt true zurück für gültige Daten und false für ungültige. Es kann zur Validierung von Daten in verschiedenen Formaten verwendet werden, einschließlich ISO.

Das obige ist der detaillierte Inhalt vonWarum stimmt mein PHP ISO-Datum mit regulären Ausdrücken nicht überein?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage