Исходный код файла sms.php:

<?php
#################################################################################################### |defaults|
# sms.php: сделано 30 декабря с 12:15 до 14:10

error_reporting(E_ALL);
@
ini_set('display_errors''On');
mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');
mb_regex_encoding('UTF-8');
mb_detect_order('UTF-8,ASCII');
mb_language('uni');
date_default_timezone_set('Europe/Moscow');



#################################################################################################### |setup|
# Available SMS
$smsAry    =    [
'Пользователя с таким номером кошелька нет.',

'Неверная сумма.',

'Пароль: 6920
Спишется 0,02р.
Перевод на счет 41001743023728'
,

'Пароль: 1780
Спишется 10,06р.
Перевод на счет 41001743023728'
,

'Пароль: 2310
Спишется 100,51р.
Перевод на счет 41001743023728'
,

'Пароль: 5309
Спишется 301,51р.
Перевод на счет 41001743023728'
,

'Пароль: 9809
Спишется 1005,03р.
Перевод на счет 41001743023728'
,

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

'Никому не говорите пароль! Его спрашивают только мошенники.
Пароль: 34721
Перевод на счет 41001743023728
Вы потратите 10000р.'
,

'Недостаточно средств.',

'ПРОВЕРКА СМЕНЫ ПОРЯДКА ПОЛЕЙ:
Перевод для 41001743023728012345 на сумму 987654,78 ₽.
Пароль 123456'
,

// Added 09 Jan 2017
'Спишется 1000р.
Перевод на счёт 41001743023728012345
Пароль 123456'
,

'Спишется 1000р.
Перевод на счёт 41001743023728
Пароль 1234'
,

'Перевод на счёт 41001743023728
Спишется 1000р.
Пароль 1234'
,

'Спишется 1000р.
Пароль 1234
Перевод на счёт 41001743023728'
,

];



#################################################################################################### |sms parser|
/*
* Функция должна принимать строку и возвращать код подтверждения, сумму и кошелек
* Порядок полей, пунктуация и слова со временем могут быть изменены!
* @return array [securityCode, paymentSum, walletNumber] if found
* @return -1/-2/-3 if not found
*/
function f_parseYaMoneySMS($sms$result = [])
{
    
/*
    * securityCode может быть 4- и 5-значным, возможно, подрастёт до 6 знаков
    * + невыгодно пересекается по цифровой маске с "Вы потратите 10000р."
    * 
    * Использование модификаторов i (PCRE_CASELESS), s (PCRE_DOTALL), m (PCRE_MULTILINE)
    * здесь скорее по привычке - любой шаблон начинаю писать с '#...#ism' для отладки
    * http://php.net/manual/en/reference.pcre.pattern.modifiers.php
    * 
    */
    
$rgx_securityCode    =    '#\b\d{4,6}(?![,\d\wр₽])#m';
    
    
/*
    * paymentSum максимальная сумма 6 знаков (больше Яша не пропустит)
    * минимальную сумму эмулятор не ограничивает, даже 0,001 принял :)
    */
    
$rgx_paymentSum        =    '#' '\b' '(?:\d{1,6}|\d{1,6},\d{2})' '\s?(?=[р₽]{1})#m';
    
    
/*
    * walletNumber ориентировочно зададим от 10 и более цифр, проверку на валидность номера
    * при необходимости можно будет легко доработать, уточнив диапазоны номеров
    */
    
$rgx_walletNumber    =    '#\b\d{10,}\b#m';
    
    
    
# Поиск: возврат ошибки и выход, или сохранение найденного
    
if (!preg_match($rgx_securityCode$sms$matches)) return -1;
    
$result['securityCode']    =    $matches[0];
    
    if (!
preg_match($rgx_paymentSum$sms$matches)) return -2;
    
$result['paymentSum']    =    $matches[0];
    
    if (!
preg_match($rgx_walletNumber$sms$matches)) return -3;
    
$result['walletNumber']    =    $matches[0];
    
    return 
$result;
}



#################################################################################################### |html asm|
# Headers and open body tag
echo <<<ZZZ
<!doctype html>
<html lang="ru">
<head>
    <title>SMS parser</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,height=device-height">
    <link href="" rel="stylesheet">
    <script src=""></script>
    <style>
        html    { font-family:sans-serif; }
        div        { display:block;margin:0 0 50px 0; }
        pre        { border:solid #ddd 1px;padding:5px;background:#f4f4f4; }
        p        { font-size:13px;white-space:pre-wrap; }
    </style>
</head>
<body>
    <div>
        <h1><a href="/vs.php?file=1" title="View source">SMS-парсер</a> для <a href="http://funpay.ru/yandex/emulator" target="_blank">Эмулятора</a></h1>
        <p>&nbsp;</p>
    </div>
ZZZ;



# Parse all SMS
foreach ($smsAry as $sms)
{
    
$ary    =    f_parseYaMoneySMS($sms);
    
$code    =    var_export($arytrue);
    
$_sms    =    htmlspecialchars($smsENT_QUOTES ENT_HTML5);
    
$color    =    $ary 'green':'red';
    
    echo
    
'<div>'.
        
'<b>SMS-сообщение:</b>'.
        
'<pre>'$_sms .'</pre>'.
        
'<p style="color:'$color .'"><b>РЕЗУЛЬТАТ: </b>'$code .'</p>'.
    
'</div>';
}



# Close body tag
echo '</body></html>';