@k0smos

Как создать маску ввода (формат) для tg бота на php?

Здравствуйте! Столкнулся с проблемой фильтрации данных отправляемых в тг бота. В боте нужно заполнить анкету, все данные отправляются в бд.. например с полем диапазона цен я решил с помощью if,else и >,<,==. Но этот способ не подходит под все поля, например поле ввода даты, нужно чтобы принимались даты только в формате 10.10.2020, если формат ввода не совпадает, должно выдать ошибку
  • Вопрос задан
  • 326 просмотров
Решения вопроса 2
qant
@qant
programer
Regex (\d{2}\.\d{2}\.\d{4})
(две цифры + точка)+(две цифры + точка)+(4 цифры)

Пример поиска такой даты в вашем же тексте:

<?php
$re = '/(\d{2}\.\d{2}\.\d{4})/m';
$str = 'только в формате 10.10.2020, если формат ввода не совпадает, должно выдать ошибку';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

// Print the entire match result
var_dump($matches);


Поигратся с регекс можно тут: https://regex101.com/r/jZpgjB/1/
Ответ написан
Комментировать
cr1gger
@cr1gger
Все дороги ведут в Рим — встретимся в Риме!
<?php
$regexp = '~(?<data>\d{2}\.\d{2}\.\d{4})~';
$date = '10.12.2020'; # правильная дата
$date_fake = '10 december 2020'; # не правильная дата

preg_match($regexp, $date, $m);

if (!empty($m['data']))
{
    echo 'date is correct!';
} else {
    echo 'error';
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы