Try
$b = preg_replace('/{[^{]*\\br.*?}/', "", $a);
Breaking that into chunks:
{
searches for a { character[^{]*
means "match any character that isn't a { any number of times (after all, if we find another { it means we're starting a new block. You could also use })?
makes the previous match non-greedy, meaning we'll get the smallest group possible\\br
will match \br.*?
is a non-greedy match that will match anything that comes before...}
the closing brace