Valider le format de date en php

Je suis en train de valider la date à l'aide de PHP.

J'aimerais formats suivants:

d/m/yy
d/m/yyyy
dd/m/yy
dd/m/yyyy
d/mm/yy
d/mm/yyyy
dd/mm/yy
dd/mm/yyyy

J'ai essayé beaucoup d'expressions régulières et les différentes variantes de checkdate() fonction. Actuellement, j'ai quelque chose comme ceci:

function _date_is_valid($str)
{
     if(strlen($str) == 0)
         return TRUE;
     if(substr_count($str,'/') == 2)
     {
         if (preg_match("/^((((31\/(0?[13578]|1[02]))|((29|30)\/(0?[1,3-9]|1[0-2])))\/(1[6-9]|[2-9]\d)?\d{2})|(29\/0?2\/(((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))|(0?[1-9]|1\d|2[0-8])\/((0?[1-9])|(1[0-2]))\/((1[6-9]|[2-9]\d)?\d{2}))/", $str))
         {
             $datearray = explode('/',$str);
             if($datearray[2] > 2030)
                 return FALSE;
             return checkdate($datearray[1], $datearray[0], $datearray[2]);
         } 
         else 
         {
             return FALSE;
         }
     }
     return FALSE;
}

Cependant, cela valide les dates comme 11/11/200 et 11/11/200#

Comment puis-je valider la date pour correspondre format requis?

Edit: j'ai pu vérifier datearray[2] entre 10 et 30 et 2010 et 2030. Mais est-il un moyen de le vérifier à l'aide de regex?

Edit1: retourne TRUE en cas de strlen($str) == 0 est parce que je veux que les utilisateurs puissent ajouter des événements, sans savoir quand aura lieu l'événement de se produire, de sorte que quelqu'un d'autre peut qualifier la planification et de l'événement d'affectation de certaines dates plus tard


Juste pour le record. J'ai fini par faire:

function _date_is_valid($str)
{
    if(strlen($str) == 0) //To accept entries without a date
        return TRUE;
    if(substr_count($str,'/') == 2)
    {
        list($d,$m,$y) = explode('/',$str);
        if(($y >= 10 && $y <= 30) || ($y >= 2010 && $y <= 2030))
        {
            return checkdate($m,$d,$y);
        }
    }
    return FALSE;
}

Merci à tous pour vos réponses

source d'informationauteur LukeP