Pues .. lo primero que tienes que hacer es "desglosar" esos formatos de fecha en sus correspondientes "dia", "mes" y "año" ..
Ese "desglose" lo puedes hacer con la función explode() al caracter "-" o "/" que són los dos separadores que usas en los ejemplos que distes ..
Una vez que tengas dicho "desglose" hecho, en el caso de la segunda fecha que tienes un "mes" como "texto" .. debes de obtener su numero correspondiente en el calendario ..
Para esto último puedes usar un array asociativo del tipo:
$meses=array("enero"=>1,"febrero"=>2, ... etc ...);
Con ese array puedes obtener fácilmente el numero que corresponde a tu més que tienes en "texto" .. Ejemplo:
$mes="mayo";
echo $meses[$mes];
A todo esto le hará falta algo de lógica para ver si tu cadena con tu fecha (string) contiene algún "-" o "/" y en consecuencia aplicar uno u otro explode() al caracter que corresponda ... Averigüar si una cadena contiene un caracter lo puedes hacer con strpos()
El objetivo de todo esto es tener tus fechas en formato "numerico" y "separadas" como ya mencioné para poder darle como parámetros a la función checkdate() que te valida si una fecha es correcta o no (según calendario).
Y .. si todo esto haces una función que acepte como parámetro tu fecha (en string, cadena) y devuelva un true/false (bajo un return ..) ya tienes tu "control" ..
explode()
http://www.php.net/manual/es/function.explode.php
strpos()
http://www.php.net/manual/es/function.strpos.php
checkdate()
http://www.php.net/manual/es/function.checkdate.php
Un saludo,