регуляркойт.е.чтобы не было 40.01.2000
читайте коментарии в мануале!а checkdate не проверяет формат ввода.
а его и не нужно проверять!а checkdate не проверяет формат ввода
$date = '40.01.2000';
var_dump(strtotime($date) !== FALSE);
// bool(false)
$date = '30.01.2000';
var_dump(strtotime($date) !== FALSE);
// bool(true)
$string = '31.1.2000';
function elena_checkdate($string)
{
$result = preg_match( '~^0?(\d|[0-2]\d|3[0-2])\.0?(\d|1[0-2])\.(\d{4})$~',$string,$matches);
// var_dump($result,$matches);
return !!$result;
}
var_dump(elena_checkdate('30.12.2000')); // true
var_dump(elena_checkdate('40.12.2000')); // false
специально для тупых: checkdate прекрасно справится с этой работой.нужно вывести сообщение о том что дата введена не верная
<?php
function elena_checkdate($string) {
return (bool)preg_match( '~^0?(\d|[0-2]\d|3[0-2])\.0?(\d|1[0-2])\.(\d{4})$~',$string);
}
var_dump(elena_checkdate('29.02.2006')); // true
var_dump(elena_checkdate('31.06.2006')); // true
var_dump(strtotime('29.02.2006')!==false); // true
var_dump(strtotime('31.06.2006')!==false); // true
var_dump(checkdate(02, 29, 2006)); // false
var_dump(checkdate(06, 31, 2006)); // false
?>