0

我正在编写基于主题的脚本,需要一种方法来替换未被脚本替换的“变量”或标记。

格式为:

^_variablename_^

也就是说,在处理以下内容后,使用变量:name=Adam, Occupation=programmer

Hello, my name is ^_title_^^_name_^, and I work as a ^_occupation_^.

我们会留^_title_^在原地。

我需要一种方法来摆脱这些,而不知道“变量”的名称。

提前致谢 :)

4

3 回答 3

1

再次处理:

$str = 'Hello, my name is ^_title_^Adam, and I work as a programmer.';
$str = preg_replace('/\^_(\w+)_\^/', '', $str);

echo $str;

键盘

于 2012-09-03T08:59:53.937 回答
0
$str = 'Hello, my name is ^_title_^Adam, and I work as a programmer.';
echo preg_replace('/^_[\w_-]+_^/i', '', $str);
于 2012-09-03T09:01:44.493 回答
0

尝试使用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 开始工作的匿名函数语法,如果你想在早期版本上使用它,你可能需要为此声明一个单独的回调。

于 2012-09-03T09:06:30.017 回答