- strtr: documentation ( source)
- preg_replace: documentation ( source)
<?php
$tokens = [
':rr'=>'\[0-9]',
':tipo'=>'\[A-Z]'
];
$regex = '/#([a-zA-z0-9_]+)(:[a-zA-Z]+)/';
$pattern = 'blog/#month:tipo/#year:rr';
echo $result = preg_replace($regex, "(?<$1>$2)", $pattern);
echo PHP_EOL;
echo $result = strtr($result, $tokens);
/*echo preg_replace_callback($regex, function (array $matches) {
$tokens = [
':rr'=>5,
':tipo'=>'\[A-Z]'
];
echo "(?<{$matches[1]}>{$tokens[$matches[2]]})";
}, $pattern);*/