PHP 用数组变量替换字符串中的 {var['key']}
PHP Replace {var['key']} in string with array variable
我不仅要替换简单变量,还要替换 array 变量。
有一个answer of Alex Howansky关于简单变量的替换:
$str = 'this is {TEST} a {THING} to test and a {array["key"]} var';
$TEST = 'one';
$THING = 'two';
$result = preg_replace('/\{([A-Z]+)\}/e', "$", $str);
{TEST} 和 {THING} 工作正常。
为了调用数组的变量变量,我需要 ${$array}['key']
()。所以我试着做第二遍:
$result = preg_replace('/\{([a-z]+)\["([a-z]+)"\]\}/', "$\{$\}[""]", $result);
但是在输出中我得到了字符串 $\{$array\}["key"]
而不是 $array["key"].
的值
如何用数组变量替换模板中的子字符串?
我无法用 preg_replace
正确解析它,所以我使用了回调:
$str = 'this is {TEST} a {THING} to test and a {array["key"]} var';
$array['key'] = 'something';
$result = preg_replace_callback('/\{([a-z]+)\["([a-z]+)"\]\}/',
function($m) use($array){
return ${$m[1]}[$m[2]];
},
$str);
如果您不知道要传递给函数的数组的名称,您将需要确保它是在全局范围内定义的,然后以这种方式访问它:
$result = preg_replace_callback('/\{([a-z]+)\["([a-z]+)"\]\}/',
function($m) {
${$m[1]} = $GLOBALS[$m[1]];
return ${$m[1]}[$m[2]];
},
$str);
我不仅要替换简单变量,还要替换 array 变量。 有一个answer of Alex Howansky关于简单变量的替换:
$str = 'this is {TEST} a {THING} to test and a {array["key"]} var';
$TEST = 'one';
$THING = 'two';
$result = preg_replace('/\{([A-Z]+)\}/e', "$", $str);
{TEST} 和 {THING} 工作正常。
为了调用数组的变量变量,我需要 ${$array}['key']
()。所以我试着做第二遍:
$result = preg_replace('/\{([a-z]+)\["([a-z]+)"\]\}/', "$\{$\}[""]", $result);
但是在输出中我得到了字符串 $\{$array\}["key"]
而不是 $array["key"].
如何用数组变量替换模板中的子字符串?
我无法用 preg_replace
正确解析它,所以我使用了回调:
$str = 'this is {TEST} a {THING} to test and a {array["key"]} var';
$array['key'] = 'something';
$result = preg_replace_callback('/\{([a-z]+)\["([a-z]+)"\]\}/',
function($m) use($array){
return ${$m[1]}[$m[2]];
},
$str);
如果您不知道要传递给函数的数组的名称,您将需要确保它是在全局范围内定义的,然后以这种方式访问它:
$result = preg_replace_callback('/\{([a-z]+)\["([a-z]+)"\]\}/',
function($m) {
${$m[1]} = $GLOBALS[$m[1]];
return ${$m[1]}[$m[2]];
},
$str);