php 将变量放入从数组加载的字符串中

php put variable into string loaded from array

我有一个 json 文件,其中包含一些用于回显的字符串。 现在我想在这些字符串之间放置变量内容,例如:

$event_config = json_decode(file_get_contents("event_config.json"), TRUE);

$output_string = $event_config['e_header']['e_welcome_text'];
$name = value_lookup("f_personalien_vorname");

echo("Hello {$name},<br>Thanks. We have just received your query<br>");
echo ($output_string);

这个工作正常,{$name} 被正确替换为 $name 中存储的内容。

echo("Hello {$name},<br>Thanks. We have just received your query<br>");

具有从 json 加载的相同字符串的此版本无法正常工作。而不是 {$name} 被替换它只是打印整个字符串。

echo ($output_string);

作为参考,我的 json 目前看起来像:

{
    "e_header": {
        "e_welcome_text": "Hello {$name},<br><br>Thanks. We have just received your query<br>",
        "e_information": "Some string"
    }
}

有人对此有想法吗?

您应该转义引号并追加以传递变量。

$event_config = json_decode(file_get_contents("event_config.json"), TRUE);
$output_string = $event_config['e_header']['e_welcome_text'];
$name = value_lookup("f_personalien_vorname");
echo("Hello " . $name . ",<br>Thanks. We have just received your query<be>");
echo($output_string);

解决了。 感谢 @El_Vanja 给我这个提示。 我将 json 更改为:

{
    "e_header": {
        "e_welcome_text": "Hello {{name}},<br><br>Thanks. We have just received your query<br>",
        "e_information": "Some string"
    }
}

注意双括号 {{name}}
然后想出了以下替换上面的表达式。

$output_string = $event_config['e_header']['e_welcome_text'];
echo(str_replace('{{name}}', $name, $output_string));