preg_match: check birthday format (dd/mm/yyyy)

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
lauthiamkok
Forum Contributor
Posts: 153
Joined: Wed Apr 01, 2009 2:23 pm
Location: Plymouth, United Kingdom

preg_match: check birthday format (dd/mm/yyyy)

Post by lauthiamkok »

Hi,

How do I make the expression which checks the birthday input to match a format like this dd/mm/yyyy? Below is what I came out so far, but it takes this too if I put 99/99/9999!

Code: Select all

if (!preg_match("/[0-9]{2}\/[0-9]{2}\/[0-9]{4}/", $cnt_birthday))
		{
			$error = true;
			echo '<error elementid="cnt_birthday" message="BIRTHDAY - Only this birthday format - dd/mm/yyyy - is accepted."/>';
		}
How can I make sure that its only 01 to 31 for dd and 01 to 12 for mm? but I am sure how to restrict yyyy... I think theoritical 9999 should be acceptable... let me know if you have a better idea!

thanks,
Lau
User avatar
bradbury
Forum Commoner
Posts: 40
Joined: Wed Aug 25, 2010 11:21 am
Location: Eugene, OR

Re: preg_match: check birthday format (dd/mm/yyyy)

Post by bradbury »

my favorite way to do this is to not give people the option and just do a quick dropdown menu and have it auto insert numbers that are already specified by the database.
If you dont want to do that I would suggest

Code: Select all

$birthday = Whatever the user inputs;
$birthday = explode("/", $birthday);
if(strlen($birthday[0] > 2) {
   echo "Wrong Input";
}
else {
// hopefully you followed the code and can figure out the rest for yourself
}
Post Reply