Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中替换标记之间的值_Php_Regex - Fatal编程技术网

在PHP中替换标记之间的值

在PHP中替换标记之间的值,php,regex,Php,Regex,我有一个包含以下文本的字符串: Id: {id} Status: {status} Priority: {prio} 我想用它各自的值替换{id}、{status}和{prio} 例如: {i} = '1' {status} = 'New' {prio}: 'Low' 如何在PHP中实现这一点?使用;回调函数的返回值用作替换字符串 $data = array( 'id' => '1', 'status' => 'New', 'prio' => 'Lo

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

Id: {id}
Status: {status}
Priority: {prio}
我想用它各自的值替换{id}{status}{prio}

例如:

{i} = '1'
{status} = 'New'
{prio}: 'Low'
如何在PHP中实现这一点?

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

$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
请参见(不带正则表达式)


preg\u match\u回调
+
~{([^\}]+)\}
来自同名变量的相应值?
$trans = array(
    '{id}'     => '1', 
    '{status}' => 'New',
    '{prio}'   => 'Low'     
);

echo strtr($text, $trans);