A chi può servire :

Codice PHP:
$day = (int)'29'
$month = (int)'02';
$year= (int)'2000';
//true
$day = (int)'29'
$month = (int)'02';
$year= (int)'2001';
//false
$day = (int)'28'
$month = (int)'02';
$year= (int)'2007';
//true
$day = (int)'31'
$month = (int)'11';
$year= (int)'2007';
//false
$isValidDayMonthtrue;
$arrayLookup = array('1'=>'31',
                    
'3'=>'31',
                    
'4'=>'30',
                    
'5'=>'31',
                    
'6'=>'30',
                    
'7'=>'31',
                    
'8'=>'31',
                    
'9'=>'30',
                    
'10'=>'31',
                    
'11'=>'30',
                    
'12'=>'31');
if(
$day !== && $month !== && $year !== ){
    if(isset(
$arrayLookup[$month]) && $day <= 31){
         
//check if month value and day value agree
        
if($day >= $arrayLookup[$month]){
            
//bad day for the month
            
$isValidDayMonthfalse;
        }
    }
    
//check february day 
    
if ($month === 2){ 
        if(
$day 29){
            
//bad day for the month
            
$isValidDayMonthfalse;  
        }
        elseif(
$day === 29){
            if ((
$year == 0) && ($year 100 != 0) || ($year 400 == 0)) {
              
// year div by 4 and ((not div by 100) or div by 400) ->ok
                 
$isValidDayMonthtrue;  
             }  
            else{
                
$isValidDayMonthfalse;
            }
        }
    }
}
var_dump($isValidDayMonth); 
Ogni suggerimento è il benvenuto