用占位符从PHP嵌套的JSON文件中获取值



我想写一个我自己的小翻译函数。

我的JSON文件看起来像:

{
"start": {
"body": {
"headline": "Hello, world!"
}
}
}

在我的PHP前端,我想写只是占位符翻译字符串。因此,id do

<h1><?php trans('start.body.headline'); ?></h1>

我的PHP函数很简单,看起来像:

function trans($string) {
if (!isset($_GET['langID']))
$lang = 'de';
else
$lang = $_GET['langID'];
$str = file_get_contents('lang/'. $lang . '.json');
$json = json_decode($str);
$string = str_replace('.', '->', $string);

echo $json->$string;
}

但是我没有得到一个结果。

My Function中的$字符串是正确的:

start->body->headline

当我写:

echo $json->start->body->headline;

我得到"Hello, world"

echo $json->$string; 

是相同的,但不起作用。为什么?

因为你使用了一些变量名$string对于函数参数,请使用此处的另一个变量名。

$keyword = str_replace('.', '->', $string);
echo $json->{$keyword};

也可以使用return方法

function trans($string) {
if (!isset($_GET['langID']))
$lang = 'de';
else
$lang = $_GET['langID'];
$str = file_get_contents('lang/'. $lang . '.json');
$json = json_decode($str);
$keyword = str_replace('.', '->', $string);
return $json->{$keyword};
}

,然后使用echo的短方式在html

<h1><?= trans('start.body.headline'); ?></h1>

最新更新