2010-07-15 11 views
0

Ce format 10-7-2010 peut-il être validé avec php? Avec ce script:Valider la date en JJ-MM-AAAA "Format en php

$array = explode('-', $str); 
$day = $array[0]; 
$month = $array[1]; 
$year = $array[2]; 
$Valid = checkdate($month, $day, $year); 

J'ai cette erreur:

checkdate() expects parameter 2 to be long 

Comment puis-je valider ce format? Merci à l'avance

+2

Fonctionne ici! http://codepad.viper-7.com/0idtfL – Artefacto

Répondre

3

Essayez de changer: $Valid = checkdate((int)$month, (int)$day, (int)$year);

modifier: J'ai essayé votre code et il fonctionne très bien, pourrait-il être que vous avez une date mal formaté quelque part que vous essayez de passer?

edit2: 10-7-2007 est une date valide, mais il semble que vous pensiez que ce ne devrait pas être? Il est une date dans le passé, donc si vous essayez de déterminer si une date est à l'avenir, vous pourriez faire quelque chose comme ceci:

$isValid = (strtotime("$year-$month-$day") > time());

+0

Il n'y a aucune raison pour laquelle il devrait le faire. Cela ne fera que cacher les bogues. – Artefacto

+0

Merci, Il n'y a pas d'erreur. Mais encore le 10-7-2007 est valide :( – TheNone

+0

oui, parce que 10-7-2007 est une date valide ... – Rob

0

et je vous remercie pour votre aide les gars. J'ai finalement obtenu un code complété (avec d'autres conditions).

Je l'affiche ici, en espérant que cela pourrait aider quelqu'un.

<?php 
function valid_date($date) // if the date is valid, then the function returns true. else returns false. 
{ 
    $array = explode('/', $date, 3); 
    if (strlen($date) == 10 && substr_count($date, '/') == 2 && checkdate($array[1], $array[0], $array[2]) && substr_count($date, ' ') == 0) { 
     return true; 
    } Else { 
     return false; 
    } 
} 
?> 

Merci