Validation de date PHP : l'expression régulière ne peut-elle pas correspondre ?

DDD
Libérer: 2024-10-23 06:08:30
original
238 Les gens l'ont consulté

PHP Date Validation: Can't the Regular Expression Match?

Validation de date PHP : dépannage d'une expression régulière

Vous essayez de valider des dates en PHP à l'aide d'une expression régulière, mais vous rencontrer des problèmes. Analysons votre code et proposons une solution plus robuste.

L'expression régulière que vous avez fournie, %A(0[1-9]|1[012])[- /.](0[1-9] |[12][0-9]|3[01])[- /.](19|20)ddz%, semble être correct pour valider le format MM/JJ/AAAA. Cependant, le code que vous utilisez pour faire correspondre la date est incorrect. Vous attribuez le résultat de preg_match à $_POST['birthday'], ce qui n'est pas ce que vous vouliez.

Validation améliorée à l'aide de checkdate

Au lieu d'utiliser un expression régulière, vous pouvez simplifier le processus de validation en tirant parti de la fonction checkdate de PHP. Cette fonction prend le mois, le jour et l'année comme paramètres distincts et renvoie une valeur booléenne indiquant si la date est valide ou non.

<code class="php">$test_date = '03/22/2010';
$test_arr = explode('/', $test_date);
if (checkdate($test_arr[0], $test_arr[1], $test_arr[2])) {
    // valid date ...
}</code>
Copier après la connexion

Dans ce code, nous convertissons la chaîne de date séparée par / en un tableau. des composants du mois, du jour et de l’année. Ensuite, nous transmettons ces composants à checkdate pour vérifier la validité de la date.

Couche supplémentaire de validation d'entrée

Pour une validation d'entrée améliorée, considérez le code suivant :

<code class="php">$test_date = '03/22/2010';
$test_arr = explode('/', $test_date);
if (count($test_arr) == 3) {
    if (checkdate($test_arr[0], $test_arr[1], $test_arr[2])) {
        // valid date ...
    } else {
        // problem with dates ...
    }
} else {
    // problem with input ...
}</code>
Copier après la connexion

Cette approche vérifie d'abord si la chaîne d'entrée contient exactement trois composants (mois, jour, année) en comptant les éléments dans $test_arr. Si le nombre est différent de 3, cela suggère une erreur potentielle dans la saisie. Par la suite, il valide la date à l'aide de checkdate.

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
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!