匹配特定格式字符串,动态替换数据。
<?php
$templ = "{username}是个大{adj}比{end}";
$datas = [
'username' => '我',
'adj' => '帅',
'end' => '。',
];
$noMatchs = ['end'];
function render($datas = array(), $templ = '', $noMatchs = array()) {
return preg_replace_callback('/\\{([\w\-\/]+)\\}/', function ($matches) use ($datas, $noMatchs) {
$name = $matches[1];
if (in_array($name, $noMatchs)) {
return $matches[0];
}
return array_key_exists($name, $datas) ? $datas[$name] : '';
}, $templ);
}
var_dump(render($datas, $templ, $noMatchs));