我正在使用PHP开发一个多语言的网站,在我的语言文件中经常有包含多个变量的字符串,这些变量稍后将被填入以完成句子。
目前,我在字符串中放置{VAR_NAME}
并在使用时手动替换每个出现的变量名,用相应的值进行匹配。
所以基本上:
{X}在{Y}上创建了一个主题
会变成:
Dany在 Stack Overflow 上创建了一个主题
我已经考虑过sprintf
,但我认为它不方便,因为它取决于变量的顺序,而这种顺序可能因语言而异。
我已经查看了How replace variable in string with value in php?,目前我基本上使用这种方法。
但是,我想知道是否有一种内置的(或者说非内置的)方便的PHP方法来处理这个问题,因为在前面的示例中,我已经有了名为X和Y的变量,更像是变量变量 $$。
因此,我可能不会在字符串上执行str_replace,而是会调用类似如下的函数:
$X = 'Dany';
$Y = 'Stack Overflow';
$lang['example'] = '{X} created a thread on {Y}';
echo parse($lang['example']);
还会打印出:
Dany在Stack Overflow上创建了一个线程
谢谢!
编辑
这些字符串作为模板使用,可以使用不同的输入多次使用。
所以基本上做 "{$X} ... {$Y}"
不会奏效,因为我会失去模板,并且该字符串将使用尚未确定的$X
和$Y
的起始值进行初始化。