删除标记变量


Remove token variables

我正在编写一个基于主题的脚本,需要一种方法来替换未被脚本替换的"变量"或令牌。

格式为:

^_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以来有效的匿名函数语法,如果您想在早期版本上使用它,可能需要为此声明一个单独的回调。