我已被命令本地化我们的网站。耶。
有问题,在我们的通知系统中。 例: 你有3条新消息
我喜欢本地字符串看起来像:
You have % new messages
然后传递数字并将%替换为数字。
然而,如果我有一些我想要多个数字的东西,比如:
You have % new messages, and % alerts
我想在数组中传递两个数字来替换第一个和第二个%
示例:
$local->get(alert.message, array(3, 4))
alert.message对You have % new messages, and % alerts
,最终输出变为:You have 3 new messages, and 4 alerts
答案 0 :(得分:0)
您可以使用preg_replace
设置替换次数限制。有了这个,您可以执行以下操作:
$str = "You have % new messages, and % alerts";
$array = [3, 4];
foreach ($array as $a)
$str = preg_replace("/%/", $a, $str, 1);
答案 1 :(得分:0)
没有给你代码(同意鸣人的建议),但sprintf应该能够提供帮助; - )
答案 2 :(得分:0)
您还可以使用strtr
:
$str = "You have :messages new messages, and :alerts alerts";
echo strtr($str, [
':messages' => 5,
':alerts' => 10,
]);
或作为一项功能:
function strReplace($str, array $items) {
return strtr($str, $items);
}
这有点多余(您可以直接调用strtr
,但它会将其打包成函数。
使用命名参数也可以使您的代码更容易阅读。
值得注意的是,这对安全产品来说并不安全。你知道吗。