Валидация даты на PHP. Как лучше реализовать?
Есть дата в формате YYYY-MM-DD. Столкнулся с проблемой проверки ее достоверности. Первое, что пришло на ум, это регулярные выражения, как-то так...
if (preg_match("/([12]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01]))/", $date)) {
...
...но здесь, насколько я понимаю, не учитывается тот факт, что в месяцах разное колличество дней, да и про высокосный год тоже забыли.
Как это лучше всего реализовать?
Ответы (1 шт):
Автор решения: Alexey
→ Ссылка
Вот, вроде, нашел вариант:
function validateDate($date, $format = 'Y-m-d') {
$d = DateTime::createFromFormat($format, $date);
return $d && $d->format($format) == $date;
}
var_dump(validateDate('2012-02-03', 'Y-m-d'));
Даже checkdate() не понадобилась :)