<?
  function isdate($date){
    $retorno = true;
    list($d, $m, $y) = split('[\\/.-]', $date);
    settype($d,"int");
    settype($m,"int");
    settype($y,"int");
        
    $ndias[1] = 31;
    // Verifica se � ano bisexto
    if( !( (($y%4)==0) && ( (($y%100)!=0) || (($y%400)==0) ) ) ) {
      $ndias[2] = 28;
    } else {
      $ndias[2] = 29;
    }    
    $ndias[3] = 31;
    $ndias[4] = 30;
    $ndias[5] = 31;
    $ndias[6] = 30;
    $ndias[7] = 31;
    $ndias[8] = 31;
    $ndias[9] = 30;
    $ndias[10] = 31;
    $ndias[11] = 30;
    $ndias[12] = 31;
    

    if($y < 0) {
      $retorno = false;
    }
    
    if($m <= 0 || $m > 12) {
      $retorno = false;
    }
    
    if($d <= 0 || $d > $ndias[$m]) {
      $retorno = false;
    }

    return $retorno;
  }

  /* Modo de usar:
  isdate("dd/mm/aaaa");
  ou
  isdate("dd-mm-aaaa");
  ou
  isdate("dd\mm\aaaa");
  ou
  isdate("dd.mm.aaaa");
  */
?>