#php #регулярные_выражения
Нужно достать число от 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)."\n"; var_dump($matches); //$Code = $matches[0]; //echo "Code is:".$Code . "\n"; } Найти ничего не должен. Но результат такой: Count of matches: 1 array(1) { [0]=> string(5) "34132" }
Ответы
Ответ 1
//$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)
Комментариев нет:
Отправить комментарий