(PHP 5 >= 5.4.1, PHP 7, PHP 8)
mb_ereg_replace_callback — Выполняет поиск и замену по регулярному выражению с поддержкой многобайтовых кодировок, обрабатывая совпадения callback-функцией
$pattern,$callback,$string,$options = null
   Проверяет строку string на совпадение с шаблоном
   pattern, затем заменяет найденный текст
   выводом функции callback.
  
   Поведение этой функции почти идентично функции mb_ereg_replace(),
   за исключением того, что вместо строки замены
   replacement необходимо определять
   функцию callback.
  
patternШаблон регулярного выражения.
       В параметре pattern можно указывать многобайтовые символы.
      
callback
       Callback-функция, которая будет вызвана и получит массив совпавших
       в строке string элементов. Callback-функция должна
       возвращать строку замены.
      
       Передаваемая в параметр callback функции mb_ereg_replace_callback() callback-функция
       часто нужна только в одном месте.
       Можно использовать
       анонимные функции, чтобы
       определить callback-функцию внутри вызова
       функции mb_ereg_replace_callback(). Поступая так, разработчик получает
       всю информацию о вызове в одном месте и не загрязняет пространство имён функций
       именем callback-функции, которая больше нигде не потребуется.
      
stringСтрока (string) для проверки.
optionsВариант поиска. Объяснение дано в описании функции mb_regex_set_options().
   Возвращает результирующую строку в случае успешного выполнения или false в случае возникновения ошибки.
   Если строка string недопустима для текущей кодировки,
   возвращается значение null.
  
| Версия | Описание | 
|---|---|
| 8.0.0 | Параметр optionsтеперь может принимать значение null. | 
| 7.1.0 | Функция проверяет, допустима ли строка stringдля текущей кодировки. | 
Пример #1 Пример использования функции mb_ereg_replace_callback()
<?php
// этот текст был утверждён в 2002
// мы хотим обновить его для 2003
$text = "День смеха — 04/01/2002\n";
$text.= "Последнее Рождество было 12/24/2001\n";
// callback-функция
function next_year($matches)
{
  // как обычно: в $matches[0] будет полное совпадение
  // $matches[1] — совпадение для первого подшаблона,
  // заключённое в «(...)» и т. д.
  return $matches[1] . ($matches[2] + 1);
}
echo mb_ereg_replace_callback(
    "(\d{2}/\d{2}/)(\d{4})",
    "next_year",
    $text,
);
?>Результат выполнения приведённого примера:
День смеха - 04/01/2003 Последнее Рождество было 12/24/2002
Пример #2 Пример использования функции mb_ereg_replace_callback() с анонимной функцией
<?php
// этот текст был утверждён в 2002
// мы хотим обновить его для 2003
$text = "День смеха — 04/01/2002\n";
$text.= "Последнее Рождество было 12/24/2001\n";
echo mb_ereg_replace_callback(
    "(\d{2}/\d{2}/)(\d{4})",
    function ($matches) {
        return $matches[1] . ($matches[2] + 1);
    },
    $text,
);
?>Замечание:
Для этой функции будет использована внутренняя кодировка или кодировка, установленная функцией mb_regex_encoding().
