Страница 4 из 5
Re: Реализация голосовых напоминаний
Добавлено: Ср мар 28, 2018 5:23 am
fandaymon
Ларчик просто открывался - вот в таком виде шаблон правильно работает
Код: Выделить всё
(Напомни|напомни) ((через (\d+|один|одну|дв[ае]|три|четыре|пять|шесть|семь|восемь|девять) (часа|час|часов|минут|минуту|минуты|секунд|секунды|секунду))|в \d+:\d+|(завтра|послезавтра|сегодня|на завтра|на послезавтра) в \d+:\d+) (.+)
и $request = mb_strtolower($matches[7]);
Re: Реализация голосовых напоминаний
Добавлено: Ср мар 28, 2018 9:13 am
xor
И вот, что интересно. У меня шаблоны регистронезависимые, а тут многие закладываются на заглавные/прописные буквы.
(Напомни|напомни)
Я один такой?
Отправлено с моего Redmi 4X через Tapatalk
Re: Реализация голосовых напоминаний
Добавлено: Ср мар 28, 2018 7:32 pm
Logrus
-(Напомни|напомни)
у меня если названо с заглавной шаблон, так и распознает
-ага, в сценарии не работал
в третьем посту в сценарий, массив =>
Re: Реализация голосовых напоминаний
Добавлено: Сб мар 31, 2018 3:08 pm
Krz
Непонятно как-то. У меня с указанным мною шаблоном и кодом работает исправно, и слова не пропадают
20:06 Алиса: Вы просили напомнить надеть кроссовки на босу ногу и бежать по улице
20:06 Алиса: Вы просили напомнить попить чай с сахаром
20:04 Алиса: Задание напомнить попить чай с сахаром установлено на тридцать первое марта в 20:06
20:04 Admin: Напомни через две минуты попить чай с сахаром
20:03 Алиса: Задание напомнить надеть кроссовки на босу ногу и бежать по улице установлено на тридцать первое марта в 20:06
20:03 Admin: Напомни через три минуты надеть кроссовки на босу ногу и бежать по улице
Re: Реализация голосовых напоминаний
Добавлено: Сб мар 31, 2018 3:17 pm
fandaymon
Krz писал(а):Непонятно как-то. У меня с указанным мною шаблоном и кодом работает исправно, и слова не пропадают
20:06 Алиса: Вы просили напомнить надеть кроссовки на босу ногу и бежать по улице
20:06 Алиса: Вы просили напомнить попить чай с сахаром
20:04 Алиса: Задание напомнить попить чай с сахаром установлено на тридцать первое марта в 20:06
20:04 Admin: Напомни через две минуты попить чай с сахаром
20:03 Алиса: Задание напомнить надеть кроссовки на босу ногу и бежать по улице установлено на тридцать первое марта в 20:06
20:03 Admin: Напомни через три минуты надеть кроссовки на босу ногу и бежать по улице
Видимо это зависит от каких-то установок PHP или локали или просто от версии PHP - когда вначале шаблона есть {} то шаблон неоднозначно отрабатывает. Это видно по тому, что именно попадает в matches. Вот если поставить (вариант1|вариант2) то всё отрабатывает вполне однозначно. Только тогда все индексы matches надо на 1 сдвигать
Re: Реализация голосовых напоминаний
Добавлено: Вс апр 01, 2018 2:47 pm
Krz
fandaymon писал(а):когда вначале шаблона есть {} то шаблон неоднозначно отрабатывает
Там стоят квадратные скобки, а не фигурные
Re: Реализация голосовых напоминаний
Добавлено: Вс апр 01, 2018 2:49 pm
fandaymon
Krz писал(а):fandaymon писал(а):когда вначале шаблона есть {} то шаблон неоднозначно отрабатывает
Там стоят квадратные скобки, а не фигурные
Да - квадратные и имелись в виду
Re: Реализация голосовых напоминаний
Добавлено: Вт апр 03, 2018 9:19 pm
Stasev
Перепробовал кучу вариантов - чет у меня так и не получается чтоб не пропадало последнее слово. Приходится говорить ей в конце "Спасибо"

Re: Реализация голосовых напоминаний
Добавлено: Вт апр 03, 2018 9:38 pm
fandaymon
Stasev писал(а): Вт апр 03, 2018 9:19 pm
Перепробовал кучу вариантов - чет у меня так и не получается чтоб не пропадало последнее слово. Приходится говорить ей в конце "Спасибо"
Вот такой - должен работать
напомни ((через (\d+|один|одну|дв[ае]|три|четыре|пять|шесть|семь|восемь|девять) (часа|час|часов|минут|минуту|минуты|секунд|секунды|секунду))|в \d+:\d+|(завтра|послезавтра|сегодня|на завтра|на послезавтра) в \d+:\d+) (.+)
Re: Реализация голосовых напоминаний
Добавлено: Вт апр 03, 2018 10:58 pm
Stasev
fandaymon писал(а): Вт апр 03, 2018 9:38 pm
Stasev писал(а): Вт апр 03, 2018 9:19 pm
Перепробовал кучу вариантов - чет у меня так и не получается чтоб не пропадало последнее слово. Приходится говорить ей в конце "Спасибо"
Вот такой - должен работать
напомни ((через (\d+|один|одну|дв[ае]|три|четыре|пять|шесть|семь|восемь|девять) (часа|час|часов|минут|минуту|минуты|секунд|секунды|секунду))|в \d+:\d+|(завтра|послезавтра|сегодня|на завтра|на послезавтра) в \d+:\d+) (.+)
Блин, вот это вот [Нн] оказывается мешало. Спасибо. Теперь заработало как надо.