(PHP 7)
preg_replace_callback_array — Realizar una búsqueda y sustitución de expresión regular con retrollamadas
$patterns_and_callbacks
   , mixed $subject
   [, int $limit = -1
   [, int &$count
  ]] ) : mixedEl comportamiento de esta función es similar a la de preg_replace_callback(), excepto que las retrollamadas se ejecutan en función de cada patrón.
patterns_and_callbacksUn array asociativo con correspondencias entre patrones (claves) y retrollamadas (valores).
subjectEl sujeto. Un string o array con varios strings para la búsqueda y sustitución.
limit
       Las sustituciones máximas posibles para cada patrón en cada
       string de subject. Su valor predeterminado es de
       -1 (sin límite).
      
countLa cuenta. Si se especifica, esta variable contrendrá el número de sustituciones hechas.
   preg_replace_callback_array() devuelve un array si el
   parámetro subject es un array, o un string
   en caso contrario. En caso de error devuelve NULL
  
   Si se encuentran coincidencias, será devuelto el nuevo sujeto; si no,
   subject será devuelto sin cambios. 
  
Ejemplo #1 Ejemplo de preg_replace_callback_array()
<?php
$subject = 'Aaaaaa Bbb';
preg_replace_callback_array(
    [
        '~[a]+~i' => function ($match) {
            echo strlen($match[0]), ' coincidencias de "a" encontradas', PHP_EOL;
        },
        '~[b]+~i' => function ($match) {
            echo strlen($match[0]), ' coincidencias de "b" encontradas', PHP_EOL;
        }
    ],
    $subject
);
?>
El resultado del ejemplo sería:
6 coincidencias de "a" encontradas 3 coincidencias de "b" encontradas