在PHP中替换标记之间的值

时间:2014-01-20 08:59:08

标签: php regex

我有一个包含以下文字的字符串:

Id: {id}
Status: {status}
Priority: {prio}

我想将 {id} {status} {prio} 替换为各自的值。

例如:

{i} = '1'
{status} = 'New'
{prio}: 'Low'

如何在PHP中执行此操作?

2 个答案:

答案 0 :(得分:2)

使用preg_replace_callback;回调函数的返回值用作替换字符串。

$data = array(
    'id' => '1',
    'status' => 'New',
    'prio' => 'Low',
);

$str = 'Id: {id}
Status: {status}
Priority: {prio}';

$str = preg_replace_callback('/{(\w+)}/', function($match) use($data) {
    return $data[$match[1]];
}, $str);

echo($str);

输出:

Id: 1
Status: New
Priority: Low

答案 1 :(得分:2)

请参阅 strtr (不使用正则表达式)

$trans = array(
    '{id}'     => '1', 
    '{status}' => 'New',
    '{prio}'   => 'Low'     
);

echo strtr($text, $trans);