PHP preg_replace用文本替换%var%

时间:2012-04-13 08:03:10

标签: php preg-replace

我正在尝试替换文本中的多个变量。 我有例如这个文字:

This is an example text , my variables are:
%name%
%frontname%
%lastname%
%email%

不,我想用{$ variable}替换%%字符之间的每个变量。

所以我的输出看起来像这样:

This is an example text , my variables are:
{$name}
{$frontname}
{$lastname}
{$email}

我尝试使用的模式是:

$textResponder = preg_replace('#\%[^\%]+\%#', '{$$1}', $text);

但这不起作用,因为我把它作为输出:{$} {$} {$}.有人知道正确的模式是什么吗?

提前致谢

3 个答案:

答案 0 :(得分:0)

$var = "Hello, %test% World %another test%!";
echo preg_replace('#%(.*?)%#', '{\$$1}', $var);

Test here

答案 1 :(得分:0)

尝试

preg_replace('/%(.*?)%/', '{\$$1}', $text);

答案 2 :(得分:0)

@Gert Van de Ven你需要逃避美元的特殊含义:

$var = "Hello, %test% World!";
echo preg_replace('#\%(.*?)\%#', '{\$$1}', $var);