Нужно достать число от 4-6 символом из строки, что бы после неё не стояло через любое кол-во пробелов "руб" или "руб." Делаю так:
$Pattern = "/([\d]{4,6})(?!\s*rub\.?)/";
Из строки без "руб" вырезает нормально. В строке где есть "руб", всё равно ловит число, и отъедает последнею цифру.
Помогите исправить.
Сделал так:
if (preg_match($Pattern, /*$message->body*/
"Ваш номер 7854 руб. 1452 руб Долг 341328 руб", $matches) === 1) {
echo "Count of matches: ".count($matches)."
";
var_dump($matches);
//$Code = $matches[0];
//echo "Code is:".$Code . "
";
}
Найти ничего не должен. Но результат такой:
Count of matches: 1
array(1) {
[0]=>
string(5) "34132"
}
Ответ
//$str = 'Ваша задолженность 1000руб. Скорость интернета ограничена до пополнения счета. Уникальный номер для оплаты 12345 10444 - ваш код для активации обещанного платежа на сумму 100 руб.';
$str = 'Ваш номер 7854 руб. 1452 руб Долг 341328 руб';
$patt = '~\b\d{4,6}\b(?!\s*руб\.?)~';
preg_match_all($patt, $str, $arr);
var_dump($arr);
Результат:
array (size=1)
0 =>
array (size=2)
0 => string '12345' (length=5)
1 => string '10444' (length=5)
Комментариев нет:
Отправить комментарий