Страницы

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

четверг, 9 января 2020 г.

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

#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)

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

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