По какой-то причине это всегда возвращает false … при вводе «2014 12 12» в форму. Именно этот формат для ввода в базу данных.
$date = trim($_POST['date']);
в моем library.php у меня есть:
function validateDate($date) {
if(preg_match('/^[0-9]{2,4}[\-[[:space:]]]{1}[0-9]{1,2}[\-[[:space:]]]{1}[0-9]{1,2}$/',$date)){
return true;
}
else{
return false;
}
}
и в моем php у меня есть:
if (validateDate($date)){
$dateCSS = 'style="border-color: #98faad;"';
}
else {
$dateCSS = 'style="border-color: red;"';
$flag = false;
}
Попробуйте это регулярное выражение:
^[0-9]{2,4}[\-[:space:]]{1}[0-9]{1,2}[\-[:space:]]{1}[0-9]{1,2}$
Более надежный способ подтвердить дату — использовать datetime
расширение.
function validateDate($date, $format = 'Y d m') {
return \DateTime::createFromFormat($format, $date) !== false;
}
Таким образом, вам не нужно прибегать к использованию регулярных выражений, и вы сможете правильно проверять даты (например, что-то вроде 2014 12 51
не будет проверять).
if ( ! validateDate('2014 12 51')) {
echo 'Not valid!';
}
Это также позволит вам проверить более сложные даты, если вам потребуется сделать это когда-нибудь:
if (validateDate('16th September 2014', 'dS F Y')) {
echo 'Valid!';
}
Для $format
Аргумент вы должны использовать параметры форматирования тот DateTime::createFromFormat()
принимает.