Maison >développement back-end >tutoriel php >Pourquoi mon expression régulière de date ISO PHP échoue-t-elle et comment puis-je y remédier ?

Pourquoi mon expression régulière de date ISO PHP échoue-t-elle et comment puis-je y remédier ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-29 12:22:10437parcourir

Why is My PHP ISO Date Regular Expression Failing, and How Can I Fix It?

Pourquoi ma correspondance de modèle de date ISO échoue ?

L'expression régulière fournie ne correspond pas correctement aux dates de style ISO en raison d'un transfert manquant des barres obliques ("/") au début et à la fin du motif. Ces délimiteurs sont essentiels dans la syntaxe regex de PHP. Le modèle corrigé doit être :

/^(?P<year>[0-9]{4})-(?P<month>[0-9]{2})-(?P<day>[0-9]{2}) (?P<hour>[1-2]{1}\d{1}):(?P<min>[0-5]{1}\d{1}):(?P<sec>[0-5]{1}\d{1})$/

Ce modèle définit six groupes de capture pour l'année, le mois, le jour, l'heure, la minute et la seconde.

Approche alternative : utilisation de DateTime Class

Bien que l'utilisation de regex puisse être une option, une solution plus élégante consiste à utiliser DateTime de PHP class:

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

Cette fonction accepte une chaîne de date et un format facultatif. Il utilise la méthode createFromFormat pour créer un objet DateTime et vérifie si l'objet généré est valide et correspond à la date d'origine.

La fonction validateDate fournit un moyen plus robuste et polyvalent de valider les dates. Il prend en charge une large gamme de formats et peut valider des dates avec différents niveaux de granularité.

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