Страницы

Поиск по вопросам

понедельник, 18 февраля 2019 г.

php preg_match помогите с выражением

Нужно достать число от 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)

Комментариев нет:

Отправить комментарий