2016-07-28 9 views
0

Проблемы:Matching 3 последних цифры в строке с регулярными выражениями

Попытка выделить последнее 3 числа в строке, используя регулярное выражение.

Код:

<?php 
    show_source('regex.php'); 

    $string = " 
     780155OVERF I000000 
     TRANFER DOMESTIC 
     000114 
     STHLM SE AB 
    "; 
?> 
<!DOCTYPE html> 
<html> 
    <head> 
     <title>Regex to match last 3 numbers</title> 
     <meta charset="utf-8"> 
    </head> 
    <body> 
     <?php 
      echo nl2br(str_replace('/\d{3}(?=[^\d]+$)/g', '<span style="background-color:red;">$1</span>', $string)); 
     ?> 
    </body> 
</html> 

Желаемый результат:

Числа 114 должны иметь красный цвет фона.

+0

И что теперь показывает? –

+2

'str_replace' не обрабатывает использование REGEX' preg_replace' – JustOnUnderMillions

+0

Это хорошо работает https://www.regex101.com/r/yR4uX6/1 –

ответ

1

Использование:

print nl2br(
     preg_replace('/\d{3}(?=[^\d]+$)/s', 
        '<span style="background-color:red;">$0</span>', 
        $string) 
      ); 
2

Основная ошибка: str_replace не работает wit regexes. Используйте preg_replace:

$string = " 
    780155OVERF I000000 
    TRANFER DOMESTIC 
    000114 
    STHLM SE AB 
"; 

// use `m` modifier as you have multiline string 
// `g` modifier is not supported by preg_replace 
echo preg_replace("/\d{3}(?=[^\d]+)$/m", '<span>$0</span>', $string);