由Regex找到并替换

时间:2016-09-18 06:11:54

标签: php regex preg-replace-callback

我有这段代码:

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

我希望将{phrase}替换为函数translate的结果。 translate函数的调用需要与{\d}参数一起使用。 例如代码:

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

应该是:

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

我尝试使用preg_replace_callback但没有成功。

我的代码:

$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
);

谢谢。

0 个答案:

没有答案