@igor--ok

Как преобразовать preg_replace в preg_replace_callback?

Изменил версию PHP на сервере и наткнулся на проблему использования модификатора "e" в регулярном выражении.
Нашел в интернете, что нужно преобразовать preg_replace в preg_replace_callback.
Сейчас код выглядит так:
$str = preg_replace("/(\w+)(:\w+)?/e", "'{'.strtoupper('\\1').'\\2}'", $str);

Помогите, пожалуйста преобразовать его в preg_replace_callback, чтобы это работало на PHP 7.4
Я попробовал сделать так:
$str = preg_replace_callback(
                 "/(\w+)(:\w+)?/",
                 function($matches){
                     foreach($matches as $match[]){
                         return '{'.strtoupper($match[0]).$match[1].'}';
                     }
                 }, 
                 $str
             );

, но получилось криво. Что-то я пишу не так(((
  • Вопрос задан
  • 46 просмотров
Решения вопроса 2
@galaxy
Видимо, так:
preg_replace_callback(
                 "/(\w+)(:\w+)?/",
                 function($matches){
                     return '{'.strtoupper($matches[1]).$matches[2].'}';
                 },
                 $str);
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
$str = preg_replace_callback(
    "/(\w+)(:\w+)?/",
    function($matches) {
        return '{' . strtoupper($match[1]) . $match[2] . '}';
    },
    $str
);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы