由Regex找到并替换

I have this code:

<div>{phrase var="web_user" {0}="Try } Symbole" {1}="\"No\""}</div><div>{phrase var="web_admin" {0}="another" {1}="Is not any1."}</div>

I want replace {phrase} with result of function translate. The call of translate function need to be with {\d} parameters. For example the code:

echo '<div>{phrase var="web_user" {0}="Try } Symbole" {1}="\"No\""}</div>';

should be:

echo '<div>'.translate("web_user", [0 => "Try } Symbole", 1=>"\"No\""]).'</div>';

I tryed to use preg_replace_callback without success.

My code:

$code = preg_replace_callback(
'/\{phrase\s+(.*)\}/iU',
function($phrase_data) {
    preg_match_all('/([a-zA-Z0-9\_]+)\\s*=\s*"([^\"])"/iU',$phrase_data[0], $parameters);
    call_user_func_array('translate', $parameters);
},
$code
);

Thank you.