(PHP 5 >= 5.4.1, PHP 7, PHP 8)
mb_ereg_replace_callback — Realiza uma busca e substituição de expressão regular com suporte a string multibyte usando um callback
$pattern,$callback,$string,$options = null
   Examina string em busca de correspondências com
   pattern, em seguida, substitui o texto correspondido
   pelo resultado da função callback.
  
    O comportamento desta função é quase idêntico ao de mb_ereg_replace(),
    exceto pelo fato de que, em vez de
    replacement, deve-se especificar um
    callback.
  
patternO padrão de expressão regular.
       Caracteres multibyte podem ser usados em pattern.
      
callback
        Um callback que será chamado e receberá um array de elementos correspondidos
        na string. O callback deve
        retornar a string de substituição.
      
        Você frequentemente precisará da função callback
        para um mb_ereg_replace_callback() em apenas um lugar.
        Nesse caso, você pode usar uma
        função anônima
        para declarar o retorno de chamada dentro da chamada para
        mb_ereg_replace_callback(). Fazendo isso,
        você tem todas as informações para a chamada em um só lugar e não
        polui o namespace da função com o nome de uma função de callback
        não utilizada em nenhum outro lugar.
      
stringA string sendo verificada.
optionsA opção de pesquisa. Consulte mb_regex_set_options() para explicação.
   A string resultante em caso de sucesso ou false em caso de erro.
   Se string não for válida para a codificação atual, null
   é retornado.
  
| Versão | Descrição | 
|---|---|
| 8.0.0 | optionsé anulável agora. | 
| 7.1.0 | A função verifica se stringé válida para a
        codificação atual. | 
Exemplo #1 Exemplo de mb_ereg_replace_callback()
<?php
// este texto foi usado em 2002
// queremos atualizá-lo para 2003
$text = "April fools day is 04/01/2002\n";
$text.= "Last christmas was 12/24/2001\n";
// a função callback
function next_year($matches)
{
  // como de costume: $matches[0] é a correspondência completa
  // $matches[1] é a correspondência para a primeira sub-expressão
  // envolvida por '(...)' e assim por diante
  return $matches[1].($matches[2]+1);
}
echo mb_ereg_replace_callback(
            "(\d{2}/\d{2}/)(\d{4})",
            "next_year",
            $text);
?>O exemplo acima produzirá:
April fools day is 04/01/2003 Last christmas was 12/24/2002
Exemplo #2 mb_ereg_replace_callback() usando função anônima
<?php
// este texto foi usado em 2002
// queremos atualizá-lo para 2003
$text = "April fools day is 04/01/2002\n";
$text.= "Last christmas was 12/24/2001\n";
echo mb_ereg_replace_callback(
            "(\d{2}/\d{2}/)(\d{4})",
            function ($matches) {
               return $matches[1].($matches[2]+1);
            },
            $text);
?>Nota:
A codificação interna ou a codificação de caracteres especificada por mb_regex_encoding() será usada como a codificação de caracteres para esta função.
