Php 动态str_替换变量(不知道名称)

Php 动态str_替换变量(不知道名称),php,str-replace,Php,Str Replace,我有一个数据库,其中的页面在内容中有一些变量,例如[var1],[name],[foo] 页面示例: 你好[姓名] 你是[var1]还是[foo] 所有这些变量都应该替换为输出上相应的php变量 [var1]变成$var1 [名称]变成$name 我知道我可以使用str_replace手动更改此变量,例如: echo( str_replace( array( [var1], [name], [foo] ), array( $var1, $name, $foo), $page )); 但是有一种

我有一个数据库,其中的页面在内容中有一些变量,例如[var1],[name],[foo]

页面示例:

你好[姓名]

你是[var1]还是[foo]

所有这些变量都应该替换为输出上相应的php变量

[var1]变成$var1 [名称]变成$name

我知道我可以使用str_replace手动更改此变量,例如:

echo( str_replace( array( [var1], [name], [foo] ), array( $var1, $name, $foo), $page ));

<>但是有一种方法可以自动地替换所有的VARS吗?

让我们考虑一个包含以下字符串的数组:

array("var1","name","foo")
因此,解决方案如下:

<?php
$rowdata=array("var1","name","foo");

foreach($rowdata as $key=>$value){
$rowdata[$key]="$".$value;
}

echo '<pre>';
print_r($rowdata);
echo '</pre>';

?>

尝试此代码。它正在工作。首先,找到括号中的所有此类字符串。然后使用preg_replace替换内容

$text = '[This] is a [test] string, [try] it.';
preg_match_all("^\[(.*?)\]^", $text, $matches);
$data = array_combine($matches[1],$matches[1]);

foreach($data as $key =>$value)
{
$text = preg_replace('/\['.$key.'\]/', '$'.$value, $text);

}
echo $text;