function check_date($date){
$seperator = "[\/\-\.]";
return preg_match("#^(((0?[1-9]|1\d|2[0-8]){$seperator}(0?[1-9]|1[012])|(29|30){$seperator}(0?[13456789]|1[012])|31{$seperator}(0?[13578]|1[02])){$seperator}(19|[2-9]\d)\d{2}|29{$seperator}0?2{$seperator}((19|[2-9]\d)(0[48]|[2468][048]|[13579][26])|(([2468][048]|[3579][26])00)))$#", $date)==1?true:false;
}
check_date("30.9.2005"); //valid
check_date("32.9.2005"); //invalid
check_date("29.1.2005"); //valid
check_date("29.2.2005"); //invalid |