我正在编写一个基于主题的脚本,需要一种方法来替换未被脚本替换的"变量"或令牌。
格式为:
^_variablename_^
比如说,在处理完以下变量后:name=Adam,Occupation=程序员
Hello, my name is ^_title_^^_name_^, and I work as a ^_occupation_^.
^_title_^
仍然存在。
我需要一种方法来摆脱这些,而不知道"变量"的名称。
提前感谢:)
再次处理:
$str = 'Hello, my name is ^_title_^Adam, and I work as a programmer.';
$str = preg_replace('/'^_('w+)_'^/', '', $str);
echo $str;
编码板
$str = 'Hello, my name is ^_title_^Adam, and I work as a programmer.';
echo preg_replace('/^_['w_-]+_^/i', '', $str);
当替换中的变量时,尝试使用preg_replace_callback,这样您就可以简单地忽略无法替换的变量:
$input = 'Hello, my name is ^_title_^^_name_^, and I work as a ^_occupation_^. ';
$variables = array('name' => 'adam');
$re = preg_replace_callback('/'^_(?<var>.+?)_'^/', function($params) use ($variables) {
if (isset($variables[$params['var']])) {
return $variables[$params['var']];
} else {
return '';
}
},
$input);
print $re;
这使用了自php5.3.0以来有效的匿名函数语法,如果您想在早期版本上使用它,可能需要为此声明一个单独的回调。