0

再会。

我在我的本地化系统中使用 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

是否可以?有没有可以使用的内置函数?还是我必须自己实施?如果是这样,也许已经有一些解决方案或库?

PS - 请不要建议我使用模板引擎。我只需要这个特定的功能。

4

1 回答 1

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);
}
于 2012-09-02T05:28:35.767 回答