(PHP 5 >= 5.4.1)
mb_ereg_replace_callback — Realiza una búsqueda y sustitución de una expresión regular con soporte multibyte usando una llamada de retorno
$pattern
   , callable $callback
   , string $string
   [, string $option = "msr"
  ] )
   Examina string para buscar coincidencias con
   pattern, luego reemplaza el texto coincidente
   con la salida de la función callback.  
  
   El comportamiento de esta función es casi idéntico al de mb_ereg_replace(), 
   excepto que en lugar del parámetro
   replacement, se debería especificar una llamada de retorno dada por
   callback.
  
patternEl patrón de la expresión regular.
       Se pueden usar caracteres multibyes en pattern.
      
callback
       Una llamada de retorno que será invocada y se le proporcionará un array de elementos coincidentes
       en el string  subject. La llamada de retorno debería
       devolver el string de sustitución.
      
       A menudo será necearia la función callback
       para una mb_ereg_replace_callback() en un sólo lugar.
       En este caso se puede usar una
       función anónima para
       declarar una llamada de retorno dentro de la llamada a
       mb_ereg_replace_callback(). De esta manera
       se tendrá toda la información para la llamada en un lugar para no
       abarrotar el espacion de nombres de funciones con un nombre de de una función de llamada
       de retorno que no se usará.
      
stringEl string a comprobar.
option
       Las condiciones de comparación se pueden establecer por el parámetro
       option. Si se especifica i para este
       parámetro, no se tendrán en cuenta las mayúsculas/minúsculas. Si se especifica
       x, se ingorarán los espacios en blanco. Si se especifica
       m, la comparación se ejecutará en modo multilínea y se incluirán
       los saltos de línea en '.'. Si se especifica p,
       la comparación se ejecutará en modo POSIX, por lo que los saltos de línea
       se cosiderarán como caracteres normales. Observe que e
       no se puede usar en mb_ereg_replace_callback().
      
   El string resultante en caso de éxito, o FALSE en caso de error.
  
Nota:
La codificación interna o la codificación especificada por mb_regex_encoding() será usada en esta función.
Ejemplo #1 Ejemplo de mb_ereg_replace_callback()
<?php
// este texto se uso en 2002
// queremos obtener esto para fechas hasta 2003
$texto = "El día de los Santos Inocentes es el 28/12/2002\n";
$texto.= "Las últimas navidades fueron el 24/12/2001\n";
// la función de llamada de retonro
function siguiente_año($coincidencias)
{
  // como siempre: $coincidencias[0] es la coincidencia completa
  // $coincidencias[1] la coincidencia para el primer subpatrón
  // encerrado entre '(...)', etc.
  return $coincidencias[1].($coincidencias[2]+1);
}
echo mb_ereg_replace_callback(
            "(\d{2}/\d{2}/)(\d{4})",
            "siguiente_año",
            $texto);
?>
El resultado del ejemplo sería:
El día de los Santos Inocentes es el 28/12/2003 Las últimas navidades fueron el 24/12/2002
Ejemplo #2 mb_ereg_replace_callback() usando una función anónima admitida en PHP 5.3.0 o posterior
<?php
// este texto se uso en 2002
// queremos obtener esto para fechas hasta 2003
$texto = "El día de los Santos Inocentes es el 28/12/2002\n";
$texto.= "Las últimas navidades fueron el 24/12/2001\n";
echo mb_ereg_replace_callback(
            "(\d{2}/\d{2}/)(\d{4})",
            function ($coincidencias) {
               return $coincidencias[1].($coincidencias[2]+1);
            },
            $texto);
?>