只是想知道如何将以下preg_replace()
转换为preg_replace_callback()
- 我很难转换为preg_replace_callback()
因为preg_replace()
已被弃用。
$tableData['query'] = preg_replace('/{%(\S+)%}/e', '$\\1', $tableData['query']);
将所有$string
替换为$string
变量。
预先感谢大家
答案 0 :(得分:1)
你可以这样做。我假设您知道eval
的危险,因此请自行承担风险。
$locals = get_defined_vars();
$tableData['query'] = preg_replace_callback('/{%(\S+)%}/', function ($match) use ($locals) {
if (!array_key_exists($match[1], $locals)) {
// the variable wasn't defined - do your error logic here
return '';
}
return $locals[$match[1]];
}, $tableData['query']);
附加警告 - 任何“声明”变量都是合理的游戏!没有什么能阻止我在$tableData['query']
变量中有这样的东西:
I am evil and want to see {%super_secret_variable%}!