Реклама

 
1 голос
 
153 просмотра
21.04.2019 / 17:08  vasilevnick

Нужно достать значения из текста

Мне нужно из текста SMS-сообщения достать данные. Текст сообщения от Яндекс.Денег, данные которые нужно достать: номер кошелька, сумма перевода, код подтверждения. Пример:


Никому не говорите пароль! Его спрашивают только мошенники.
Пароль: 89671
Перевод на счет 410018409883945
Вы потратите 5025,13р.


Для этого я использую регулярные выражения и функцию preg_match_all():

  1. $match_list = [];                                                                                                            
  2. $regexp = '/([Пп]ароль: (?<password>\d+))|([Пп]еревод на счет (?<wallet>\d+))|([Вв]ы потратите (?<sum>[\d,\.]+))/';                                                                                                              
  3. preg_match_all($regexp, $sms, $match_list, PREG_UNMATCHED_AS_NULL);

Именно теперь вопрос: имеются ли в моём решении какие-либо недостатки? Если да, буду благодарен за критику и предложения как можно улучшить решение.
Изм. от 21.04.2019 / 17:18
Ответы
 
1 голос
 
# 22.04.2019 / 10:50  Koenig
Выбирайте просто цифры подряд
22.04.2019 / 14:39  Пользователь удалён
Генмально. Спасибо!
 
0 голосов
 
# 22.04.2019 / 05:13  Askalite
Результат:
array (
   0 =>
   array (
     0 => '�ароль: 89671',
     1 => '�еревод на счет 410018409883945',
     2 => '�ы потратите 5025,13',
   ),
   1 =>
   array (
     0 => '�ароль: 89671',
     1 => NULL,
     2 => NULL,
   ),
   'password' =>
   array (
     0 => '89671',
     1 => NULL,
     2 => NULL,
   ),
   2 =>
   array (
     0 => '89671',
     1 => NULL,
     2 => NULL,
   ),
   3 =>
   array (
     0 => NULL,
     1 => '�еревод на счет 410018409883945',
     2 => NULL,
   ),
   'wallet' =>
   array (
     0 => NULL,
     1 => '410018409883945',
     2 => NULL,
   ),
   4 =>
   array (
     0 => NULL,
     1 => '410018409883945',
     2 => NULL,
   ),
   5 =>
   array (
     0 => NULL,
     1 => NULL,
     2 => '�ы потратите 5025,13',
   ),
   'sum' =>
   array (
     0 => NULL,
     1 => NULL,
     2 => '5025,13',
   ),
   6 =>
   array (
     0 => NULL,
     1 => NULL,
     2 => '5025,13',
   ),
)
Всего: 2

Мы в соцсетях

vk tw tg yt

Пожертвования

Аноним2850 р.
Freddy1700 р.
riseremi1611 р.
NaruTrey800 р.
vlavolk637 р.