vmavrou Posted November 20, 2009 Share Posted November 20, 2009 Hi, i want to check for dates with this form yyyy-mm-dd, ex 2009-11-20 i have made this : $pattern = "((19|20)\d\d[-](0[1-9]|1[012])[-](0[1-9]|[12][0-9]|3[01]))"; $test =2009-11-01; if (preg_match($pattern,$test)>0) { echo "ok"; } else { echo "false"; } but always getting false..am i doing something wrong with the pattern? Quote Link to comment https://forums.phpfreaks.com/topic/182322-solved-preg_match-for-date-checking/ Share on other sites More sharing options...
salathe Posted November 20, 2009 Share Posted November 20, 2009 Can you do var_dump($test); ? If your code is the same as in the post above, its value will be 1997 and not the date that you think it is. Quote Link to comment https://forums.phpfreaks.com/topic/182322-solved-preg_match-for-date-checking/#findComment-962108 Share on other sites More sharing options...
vmavrou Posted November 20, 2009 Author Share Posted November 20, 2009 yes you are right... i got this : int(1997) but what this means? and what am i doing wrong?? Quote Link to comment https://forums.phpfreaks.com/topic/182322-solved-preg_match-for-date-checking/#findComment-962115 Share on other sites More sharing options...
vmavrou Posted November 20, 2009 Author Share Posted November 20, 2009 oh!! i'm dumb...you are so right ! fixed it! thanks alot! (missed the "") Quote Link to comment https://forums.phpfreaks.com/topic/182322-solved-preg_match-for-date-checking/#findComment-962118 Share on other sites More sharing options...
nrg_alpha Posted November 20, 2009 Share Posted November 20, 2009 $pattern = "((19|20)\d\d[-](0[1-9]|1[012])[-](0[1-9]|[12][0-9]|3[01]))"; You could also use interval quantifiers like \d{2} instead of \d\d (no harm either way granted). And as for the dash, you don't need to have it in a character class (as in this case, the character class doesn't serve any truly useful purpose). Quote Link to comment https://forums.phpfreaks.com/topic/182322-solved-preg_match-for-date-checking/#findComment-962135 Share on other sites More sharing options...
salathe Posted November 20, 2009 Share Posted November 20, 2009 Also bear in mind that your pattern will allow anything (or nothing) before and after the date. As it stands, the value abc 2009-11-20 def will match (and your script will echo ok). For more info on what to do, take a peek at http://php.net/regexp.reference.circudollar and http://www.regular-expressions.info/anchors.html Quote Link to comment https://forums.phpfreaks.com/topic/182322-solved-preg_match-for-date-checking/#findComment-962162 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.