Más sencilloo y efectivo que comprobar la sintax de tu fecha sería comprobar si la fecha indicada es real (según calendario)
Para eso, .. desglosa tu fecha en sus partes: año, mes y día usando explode() al caracter de separador que usas (el -) y de ahí montas tu fecha sobre chekdate()
más info:
http://www.php.net/explode http://www.php.net/checkdate
Si tu esperas ese formato (aaaa-mm-dd) y yo intruzco otra cosa o bien me equivoco y pongo en "mes" un numero o en día (para ese mes) que no corresponde .. la función checkdate() hará su parte al validar la fecha (según calendario).
Un saludo,