gpt4 book ai didi

PHP用数组变量替换字符串中的{var ['key' ]}

转载 作者:搜寻专家 更新时间:2023-10-31 21:21:59 25 4
gpt4 key购买 nike

我不仅要替换简单变量,还要替换数组 变量。有一个 answerAlex Howansky关于替换简单变量:

$str = 'this is {TEST} a {THING} to test and a {array["key"]} var';

$TEST = 'one';
$THING = 'two';

$result = preg_replace('/\{([A-Z]+)\}/e', "$$1", $str);

它对{TEST}和{THING}工作正常。

对于数组的调用变量变量,我需要 ${$array}['key'] ( https://stackoverflow.com/a/20216265/1056384 )。所以我试着做第二遍:

$result = preg_replace('/\{([a-z]+)\["([a-z]+)"\]\}/', "$\{$$1\}["$2"]", $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);

关于PHP用数组变量替换字符串中的{var ['key' ]},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45470152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com