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
Patricia Arquetteoriginal
2024-12-15 11:50:11412parcourir

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)
    // ...

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)
    // ...

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;
}

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!

Déclaration:
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