recien veo la respuesta, aqui esta la otra expresion regular
Código PHP:
$string = "Mi perro se murio por la culpa de {Carlos Tomala|55} y tambien por la cumpla de {Pepito Flow|133} ... ";
$salida = preg_replace("#\{([a-zA-Z\s]+)\|(\d+)\}#", "<a href='loquesea/id?=$2'>$1</a>", $string);
echo $salida;