2015-07-14 1 views
0

J'ai une forme qui ne cesse de lancer une erreur aux utilisateurs parce qu'ils ne comprennent pas que leur date de naissance doit être au format MM/JJ. Je ne demande pas pour l'année, mais certains le mettre dans de MM/AA et ne se rendent pas compte que je veux que le jours pas l'année.PHP expression régulière pour vérifier si MM/DD sont à portée appropriée

J'ai essayé de le faire avec regex mais n'a pas pu le comprendre, donc j'écrit ce

$ckdate = explode("/", $mySub['Birthday']); 
if($ckdate[0]>12 || $ckdate[0]<1){ 
    echo 'Please make sure your birthdate is in a valid format MM/DD, we ask for month and day only'; 
    return; 
} 
if($ckdate[1]>31 || $ckdate[1]<1){ 
    echo 'Please make sure your birthdate is in a valid format MM/DD, we ask for month and day only'; 
    return; 
} 

Est-ce la meilleure façon de le faire? Cela semble inefficace. Je me demande si regex est le moyen, ou y at-il une fonction PHP pour le faire?

Merci d'avance.

+0

votre mélange js avec php –

+2

[Vous n'avez pas besoin de regex] (http://blog.codinghorror.com/regular-expressions-now-you-have-two-problems/) pour cela, la façon dont vous ' re le faire est probablement bien. Toutefois, vous avez créé ce problème en utilisant un format auquel les utilisateurs ne s'attendent pas. [Tu fais réfléchir!] (Http://www.amazon.co.uk/Dont-Make-Think-Steve-Krug/dp/3826697057/ref=sr_1_2?ie=UTF8&qid=1436916080&sr=8-2&keywords= Ne + me faire + + penser) – vascowhite

+0

Il y a un chevauchement entre un mois à 2 chiffres et une année à 2 chiffres qui pourrait être valable à la fois. Comment pouvez-vous faire la différence? Il pourrait être préférable d'utiliser une boîte de dépôt pour les mois et les jours. – sln

Répondre

2

Vous pouvez utiliser checkdate() et il suffit d'entrer une année fictive. Par exemple: checkdate($m, $d, 2000).

Note: vous voulez probablement utiliser une année bissextile comme l'année fictive afin ceux qui sont nés le 29 Février ne sont pas laissés dans le froid.

+0

Excellente suggestion. Cela réduit mon code et le rend un peu plus propre. Maintenant, je n'ai besoin que d'une instruction if. – garek007

+0

Oui, essayez toujours d'utiliser la fonctionnalité intégrée car elle est moins sujet aux erreurs et vous n'avez pas besoin de dupliquer la fonctionnalité. – Anonymous