Maison  >  Article  >  développement back-end  >  Validation de date PHP : l'expression régulière ne peut-elle pas correspondre ?

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

DDD
DDDoriginal
2024-10-23 06:08:30239parcourir

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>

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>

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!

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