Telegram Deep Linking парсинг параметра

154
04 ноября 2019, 03:50

Есть конструкция которая парсит команду /start в телеграм боте c параметрами.

$command = '/start 123';
$regex = '/(\/start\s)(\d+)/';
if(preg_match($regex, $command, $match)) {
    echo 'start with parameter detected';
}

Как в регулярном выражении указать, что (\d+) опциональный параметр? Что бы можно было отлавливать как /start так и /start 123?

Answer 1

Используйте квантификатор ? следующим образом:

$regex = '/(\/start)(?:\s(\d+))?/';

См. демо онлайн.

  • (\/start) - Захватывающая подмаска №1: /start
  • (?: - начало необязательной незахватывающей подмаски (так как после неё сразу стоит квантификатор ?)
    • \s - пробельный символ
    • (\d+) - Захватывающая подмаска №2: 1 и более цифр
  • )? - конец необязательной незахватывающей подмаски, 1 или 0 повторов.
READ ALSO
Как сохранть значение выведенное через echo в переменную?

Как сохранть значение выведенное через echo в переменную?

Столкнулся с одной проблемой, на первый взгляд все не простоПредлагаю два есть две вариации вопроса

163
Как создать содержимое и передать в файле xml на sftp?

Как создать содержимое и передать в файле xml на sftp?

Пытаюсь создать и передать файл xml c содержимым через SSH Пробовал через curl,при этом файл создается на sftp но с пустым содержимымСам код:

171
php mysql выбор данных в столбце

php mysql выбор данных в столбце

подскажите как можно выбрать значение из столбца 'route_long_name' в mysql, если есть запись в нем такого вида разделенная (-) "АС

160
Что это строка означает?

Что это строка означает?

Можете подсказать, что делает пятая строка:

153