Maison > développement back-end > tutoriel php > Pourquoi mon expression régulière PHP ne parvient-elle pas à valider un format de date ISO ?

Pourquoi mon expression régulière PHP ne parvient-elle pas à valider un format de date ISO ?

Patricia Arquette
Libérer: 2024-12-15 11:50:11
original
413 Les gens l'ont consulté

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

Regex ne parvient pas à valider le format de date ISO

Question :

Pourquoi le expression régulière suivante, destinée à correspondre aux dates de style ISO, fonctionnant comme attendu ?

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)
    // ...
Copier après la connexion
Copier après la connexion

Réponse :

Bien que l'expression régulière elle-même soit valide, le problème ici réside dans l'utilisation de barres obliques " /" comme délimiteurs. PHP nécessite des guillemets doubles " ou des guillemets simples " comme délimiteurs pour les expressions régulières, pas des barres obliques.

Pour corriger ce problème, remplacez les barres obliques par des guillemets doubles :

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)
    // ...
Copier après la connexion
Copier après la connexion

Maintenant, le régulier l'expression correspondra correctement aux dates de style ISO.

Avantages de l'utilisation de DateTime Classe :

Bien que l'expression régulière corrigée valide les dates ISO, il vaut la peine de considérer la classe DateTime pour la validation et la manipulation de la date et de l'heure. La classe DateTime est plus complète et peut gérer un large éventail de dates et de manipulations. formats d'heure.

L'exemple suivant montre comment utiliser la classe DateTime pour valider une date de style ISO :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal