Принятие только строго отформатированной строки, вероятно, плохая практика. Предполагая, что вы получаете информацию с веб-страницы, было бы лучше иметь отдельные поля для месяца, дня и года. Они могут быть просто текстовыми полями, но может быть предпочтительнее иметь выпадающие меню, которые решат вашу проблему с лимитами (то есть, единственный выбор на месяц - 1,2, ..., 12) Требование, чтобы пользователи вводили 01.01.2001 и не принимало 01.01.2001, является ленивым программированием. И только принимать "/" в качестве разделителя неудобно.
Но, чтобы коснуться исходного вопроса, даже если вы решите придерживаться форматированных строк - поскольку это поле даты рождения, вам, вероятно, следует ограничить yyyy:
if($yyyy > date('Y')) {
echo '<error elementid="cnt_birthday" message="BIRTHDAY - Year must be less than or equal to the current year."/>';
}
В противном случае люди могут иметь отрицательный возраст:)