Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 删除令牌变量_Php_Replace - Fatal编程技术网

Php 删除令牌变量

Php 删除令牌变量,php,replace,Php,Replace,我正在编写一个基于主题的脚本,需要一种方法来替换脚本中没有替换的“变量”或标记 格式为: ^_variablename_^ 比如说,在处理以下内容之后,使用变量:name=Adam,accountry=programmer Hello, my name is ^_title_^^_name_^, and I work as a ^_occupation_^. 我们的^标题^仍将保留 我需要一种在不知道“变量”名称的情况下消除这些问题的方法 提前感谢:)再次处理: $str = 'Hello,

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

格式为:

^_variablename_^
比如说,在处理以下内容之后,使用变量:name=Adam,accountry=programmer

Hello, my name is ^_title_^^_name_^, and I work as a ^_occupation_^.
我们的
^标题^
仍将保留

我需要一种在不知道“变量”名称的情况下消除这些问题的方法

提前感谢:)

再次处理:

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

echo $str;

在中替换变量时,请尝试使用,这样您就可以忽略无法在中替换的变量:

$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;
$input='你好,我的名字是^头衔^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^;
$variables=array('name'=>'adam');
$re=preg\u replace\u回调('/\^.+?)\^/',函数($params)使用($variables){
if(isset($variables[$params['var']])){
返回$variables[$params['var']];
}否则{
返回“”;
}   
},  
美元投入);
打印$re;

这使用了自php 5.3.0以来一直有效的匿名函数语法,如果您想在早期版本中使用它,可能需要为此声明一个单独的回调。

您知道
+?
是最慢的regexp吗?完美!按预期工作,按盒子上的说明执行。非常感谢。
$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;