$arr['/pattern/'] = name_function('$1');
$result = preg_replace(array_keys($arr), array_values($arr), $string);
e (PREG_REPLACE_EVAL)
Если используется данный модификатор, preg_replace() после выполнения стандартных подстановок в заменяемой строке интерпретирует ее как PHP-код и использует результат для замены искомой строки. Одинарные и двойные кавычки, обратные слэши (\) NULL-символы будут проэкранированы обратными слэшами в подставляемых обратных ссылках.