美好的一天。
我在我的本地化系统中使用SprintF函数来获取自定义脚本,但是我希望还有枚举值,这将为我节省大量代码。
现在我做
$string = 'Some localisation string with %s and %s variables.';
$qwe = sprintf($string,'xxx', 'yyy'); //returns: Some localisation string with xxx and yyy variables.
这对于简单的值很有用,但我有很多情况需要使用可枚举的东西。
所以,我希望有这样的东西
$string = 'Some string %{qwe,zxc,ddd,yyy} blah blah';
$qwe = someFunction($string,1); //would return: Some string zxc blah blah
$qwe = someFunction($string,3); //would return: Some string yyy blah blah
有可能吗?是否有可以使用的buildin功能?或者我必须自己实施吗?如果是这样,也许已经有一些解决方案或库?
PS - 请不要建议我使用模板引擎。我只需要这个特殊功能。
答案 0 :(得分:1)
没有这样的bulidin功能,你需要自己写一个。
function someFunction($string, $index) {
return preg_replace_callback('/%\{([^\}]*)\}/', function($matches) use ($index) {
$values = explode(',', $matches[1]);
return isset($values[$index - 1]) ? $values[$index - 1] : $matches[0];
}, $string);
}