Проверка поля даты предварительного совпадения
-
19-09-2019 - |
Вопрос
Я пытаюсь «проверить» поле даты.Я хочу разрешить только числовые символы и символы.
$born_date=$_POST['date'];
$goodchars = array("1","2","3","4","5","6","7","8","9","0","-");
$char_re_good = '/['.preg_quote(join('', $goodchars), '/').']/';
if (!(preg_match($char_re_good, $born_date))) {
echo "not ok, contain INVALID chars"
}else{
echo "ok, contain valid chars"
}
Если я попытаюсь найти «1960», то ОК.Если я попытаюсь найти «asdfg», то НЕ ОК.Но если я ищу «1960/», то результат будет в порядке.Я не понимаю, почему.
Не могли бы вы помочь мне изменить, чтобы проверить, заполняет ли пользователь только символы «0-9» и «-».
Спасибо
Решение
вам нужно «закрепить» свое выражение лица, т.е.вставьте маркеры начала строки ^ и конца строки $.
preg_match('/^[0-9-]+$/', $born_date);
однако preg_match не является способом проверки дат.Например, приведенное выше будет принимать «99999999» и т. д.
Другие советы
регулярное выражение пользователя 187291 будет соответствовать только символам даты, и это то, что вам нужно.Быстрый способ проверить дату — попытаться преобразовать ее в метку времени с помощью strtotime()
:
if (strtotime($date_str)!==false) {
// The date is valid.
}
$char_re_good = "/^[0-9-]+$/";
Попробуйте это