我正在编写基于主题的脚本,需要一种方法来替换未被脚本替换的“变量”或标记。
格式为:
^_variablename_^
也就是说,在处理以下内容后,使用变量:name=Adam, Occupation=programmer
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;
这使用了从 php 5.3.0 开始工作的匿名函数语法,如果你想在早期版本上使用它,你可能需要为此声明一个单独的回调。