Я работаю над многоязычным веб-сайтом в PHP, а в файлах моих языков у меня часто есть строки, которые содержат несколько переменных, которые будут позже заполнены для завершения предложений.
В настоящее время я помещаю {VAR_NAME}
в строку и вручную заменяя каждое вхождение своим значением соответствия при использовании.
Итак, в основном:
{X} created a thread on {Y}
становится:
Dany created a thread on Stack Overflow
Я уже думал о sprintf
, но я считаю неудобным, потому что он зависит от порядка переменных, которые могут меняться от языка к другому.
И я уже проверил Как заменить переменную в строке со значением в php?, и теперь я в основном использую этот метод.
Но мне интересно узнать, есть ли встроенный (или, может быть, нет) удобный способ в PHP, чтобы сделать это, учитывая, что у меня уже есть переменные, названные в точности как X и Y в предыдущем примере, больше как $$ для переменная переменная.
Поэтому вместо того, чтобы делать str_replace в строке, я мог бы вызвать такую функцию:
$X = 'Dany';
$Y = 'Stack Overflow';
$lang['example'] = '{X} created a thread on {Y}';
echo parse($lang['example']);
также будет распечатываться:
Dany created a thread on Stack Overflow
Спасибо!
Edit
Строки служат в качестве шаблонов и могут использоваться несколько раз с различными входами.
Таким образом, в основном выполнение "{$X} ... {$Y}"
не приведет к трюку, потому что я потеряю шаблон, и строка будет инициализирована начальными значениями $X
и $Y
, которые еще не определены.