PHP正则表达式模板 - 查找所有出现的{{var}}

a_m*_*m0d 4 php regex templates

我需要一些帮助为我的PHP脚本创建一个正则表达式.基本上,我有一个包含我的数据的关联数组,我想使用preg_replace用真实数据替换一些占位符.输入将是这样的:

<td>{{address}}</td><td>{{fixDate}}</td><td>{{measureDate}}</td><td>{{builder}}</td>
Run Code Online (Sandbox Code Playgroud)

我不想使用str_replace,因为数组可能包含的项目比我需要的多得多.

如果我理解正确,preg_replace能够从正则表达式中获取它找到的文本,并将其替换为数组中该键的值,例如

<td>{{address}}</td>
Run Code Online (Sandbox Code Playgroud)

替换为$ replace ['address']的值.这是真的,还是我误读了php文档?

如果这是真的,有人可以帮我告诉我一个正在解析这个的正则表达式(如果你也解释它是如何工作的话会很感激,因为我对正则表达式还不是很好).

非常感谢.

cle*_*tus 8

使用preg_replace_callback().这对于这种事情非常有用.

$replace_values = array(
  'test' => 'test two',
);
$result = preg_replace_callback('!\{\{(\w+)\}\}!', 'replace_value', $input);

function replace_value($matches) {
  global $replace_values;
  return $replace_values[$matches[1]];
}
Run Code Online (Sandbox Code Playgroud)

基本上,这表示查找包含单词字符的{{...}}的所有出现,并将该值替换为查找表中的值(作为全局$ replace_values).