PHP中preg_replace中的动态变量
我有这样一个文本模板:PHP中preg_replace中的动态变量,php,regex,preg-replace,Php,Regex,Preg Replace,我有这样一个文本模板: $template = [FIRSTNAME] say hello to [NAME] 我有一个用户数组,比如 [user_name] => myname [user_firstname] => myfirstname 我想用preg\u replace对其进行转换,因此我尝试了以下方法: $replacement = '$user[user_${1}]'; $result['texte'] = preg_replace('/[(.*)]/', {$rep
$template = [FIRSTNAME] say hello to [NAME]
我有一个用户数组,比如
[user_name] => myname
[user_firstname] => myfirstname
我想用preg\u replace
对其进行转换,因此我尝试了以下方法:
$replacement = '$user[user_${1}]';
$result['texte'] = preg_replace('/[(.*)]/', {$replacement}, $result['texte']);
没有任何成功:(/[(.*)]/
不会逃逸[
或]
,如果逃逸,基本上会匹配所有内容。使用/\[(.*)\]/
。此外,需要strotlower
匹配的内部值
$template = "[FIRSTNAME] say hello to [NAME]";
$replacements = array(
'user_name' => 'myname',
'user_firstname' => 'myfirstname',
);
$result['texte'] = preg_replace_callback('/\[(.*?)\]/', function ($match)
use ($replacements) {
return $replacements["user_" . strtolower($match[1])];
}, $template)
/[(.*)]/
不会转义[
或]
,如果转义,则基本上会匹配所有内容。使用/\[(.*)\]/
。此外,还需要strtolower
匹配的内部值
$template = "[FIRSTNAME] say hello to [NAME]";
$replacements = array(
'user_name' => 'myname',
'user_firstname' => 'myfirstname',
);
$result['texte'] = preg_replace_callback('/\[(.*?)\]/', function ($match)
use ($replacements) {
return $replacements["user_" . strtolower($match[1])];
}, $template)
查看
preg\u replace\u callback()
此外,您还需要转义正则表达式中的方括号。否则,您将只匹配中的一个字符(
,,
,*
,)
。查看preg\u replace\u callback()
此外,您还需要转义正则表达式中的方括号。否则,您将只匹配中的一个字符(
,
,*
,)
。效果非常好!感谢有关正则表达式和[]的提示!感谢有关正则表达式和[]的提示