首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除标记变量

删除标记变量
EN

Stack Overflow用户
提问于 2012-09-03 16:58:01
回答 3查看 67关注 0票数 0

我在写一个基于主题的脚本的过程中,需要一种方法来替换“变量”或令牌,没有被脚本替换。

格式为:

代码语言:javascript
复制
^_variablename_^

因此,假设在处理完以下内容之后,使用变量: name=Adam、Occupation=programmer

代码语言:javascript
复制
Hello, my name is ^_title_^^_name_^, and I work as a ^_occupation_^.

我们将留下^_title_^仍然在原地。

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

提前感谢:)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-03 16:59:54

再次处理:

代码语言:javascript
复制
$str = 'Hello, my name is ^_title_^Adam, and I work as a programmer.';
$str = preg_replace('/\^_(\w+)_\^/', '', $str);

echo $str;

Codepad

票数 1
EN

Stack Overflow用户

发布于 2012-09-03 17:01:44

代码语言:javascript
复制
$str = 'Hello, my name is ^_title_^Adam, and I work as a programmer.';
echo preg_replace('/^_[\w_-]+_^/i', '', $str);
票数 0
EN

Stack Overflow用户

发布于 2012-09-03 17:06:30

在替换变量时尝试使用preg_replace_callback,这样您就可以简单地忽略不能在中替换的变量:

代码语言:javascript
复制
$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开始的匿名函数语法,如果你想在早期版本中使用它,你可能需要为它声明一个单独的回调。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12244777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档