Я хочу вот что сделать - чтобы после того, как отработал preg_replace_callback - в переменной $replacements были пары ключ значение.
В локальной области видимости замыкания функция работает (внутри $replacements содержит все что нужно). Стоит вывести снаружи - значения пропадают. Не знаю, как передать по ссылке правильно, она скорее всего работает с копией переменной, а не с ней самой.
$total = '';
$pattern = "/<([a-z][a-z0-9_]+):([^:\r\n]+)>/";
$replacements = array();
$total = preg_replace_callback($pattern, function ($matches) use ($replacements) {
static $counter = 1;
$name = '@' . $counter;
$value = '(?P<' . $matches[1] . '>' . $matches[2] . ')';
$replacements[$name] =& $value; // ???????????????????
$counter++;
return $name;
}, $route);
print_r($replacements); // Array () - ???????????
exit();