#php
#php
Вопрос:
У меня есть функция ввода даты, которая требует от пользователя ввести дату в следующем формате: ДД-ММ-ГГГГ — затем она преобразуется в ГГГГ-ММ-ДД
Я хочу выполнить проверку, чтобы увидеть, вводят ли они правильный формат. т.Е. если введено что-либо еще, кроме ДД-ММ-ГГГГ, тогда должно появиться сообщение об ошибке
В настоящее время я использую следующее
list($y, $m, $d) = explode('-', $date);
if(checkdate($m, $d, $y)){
}else{
die("The date was in the wrong format");
}
Я попытался поместить код, который следует за этим, внутрь оператора if, а также вообще не включать else — но это не работает. Есть предложения о том, что я могу попробовать? Спасибо
Ответ №1:
Вы просите пользователя ввести ДД-ММ-ГГГГ, но в вашем list()
вызове ожидается, что explode()
порядок будет таким, как ГГГГ-ММ-ДД-ДД.
Обновите свой код с помощью:
list($d, $m, $y) = explode('-', $date);
Ответ №2:
просто измените оператор на противоположный:
list($d, $m, $y) = explode('-', $date);
if(!checkdate($m, $d, $y)){
die("The date was in the wrong format");
}
// your code here
Ответ №3:
попробуйте эти
http://roshanbh.com.np/2008/05/date-format-validation-php.html
http://www.plus2net.com/php_tutorial/date-validation.php
лучше сначала проверить на стороне клиента, используя js, затем вы можете выполнить php validtaion .
почему страница должна отправлять
Ответ №4:
$in = '31-05-2011';
$ts = date_create_from_format('d-m-Y', $in);
$out = date_format($ts, 'd-m-Y');
if ($in === $out) {
... it's correctly formatted
}
Обратите внимание, что это не приведет к обнаружению ошибок, таких как указание ’03-04-11′ для 4 марта 2011 года, когда пользователь на самом деле имеет в виду 11 апреля 2003 года.