3 votes

Variantes de la date de contrôle PHP

J'ai trouvé une fonction php checkdate() mais, étrangement, il ne semble accepter que les données au format de int $month , int $day , int $year . Cependant, je passe la date sous forme de chaîne de caractères (exemple "2012-06-13" ), j'ai donc trouvé une solution de rechange, car Je n'autoriserais que les dates saisies dans ce format . Malheureusement, j'ai l'impression que c'est une approche peu sûre et pas très agréable du problème :

function CheckAdditional($value)
{
    $data = explode("-", $value);

    return checkdate($data[1], $data[2], $data[0]);
}

Question : existe-t-il un meilleur moyen de vérifier si la date est valide ?

2voto

noway Points 1064

Vous pouvez essayer :

function checkDateFormat($date){  
//match the format of the date  
if (preg_match ("/^([0-9]{4})-([0-9]{2})-([0-9]{2})$/", $date, $parts))  {    
    //check weather the date is valid of not        

    if(checkdate($parts[2],$parts[3],$parts[1]))          
       return true;        
    else         
       return false;  
    }  
else    
return false;}

Crédits : http://roshanbh.com.np/2008/05/date-format-validation-php.html

1voto

Nasaralla Points 1292

Juste pour être sûr, vous pouvez faire

date("Y-m-d", strtotime($yourdatestr));

De cette façon, même si le format est incorrect, il sera corrigé dans la plupart des cas.

1voto

<?php

function CheckAdditional($value)
{
    return date('Y-m-d', strtotime($value)) == $value;
}

?>

Après plusieurs essais, tant de ma part que de celle des personnes qui ont essayé de m'aider, j'ai trouvé cette solution qui me convient parfaitement et qui est à la fois facile et vraiment fiable à mon avis, car personne n'a pu lui donner tort jusqu'à présent.

1voto

User 433 Points 11
$jahr = (int) $_POST['jahr'];
$monat =  (int) $_POST['monat'];
$tag = (int) $_POST['tag'];
$datum = "$tag. $monat. $jahr";

if (checkdate($monat, $tag, $jahr) == FALSE) {
    $allesok = false;
    $fehlermeldung .= "<p class='fehler'>Ungültiges Datum $datum!</p>";
}

0voto

feeela Points 9901

Si vous limitez les entrées de l'utilisateur pour qu'elles ne soient valides que dans un seul format (qu'en est-il de la localisation ?), vous pouvez alors analyser l'entrée par vous-même, en utilisant une fonction regexp ou en divisant l'entrée par "-" et vérifier si elle se transforme en un tableau de valeurs à trois chiffres

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X