用数组PHP顺序替换字符

时间:2015-07-03 13:21:09

标签: php

我已被命令本地化我们的网站。耶。

有问题,在我们的通知系统中。 例: 你有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

3 个答案:

答案 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,但它会将其打包成函数。

使用命名参数也可以使您的代码更容易阅读。

值得注意的是,这对安全产品来说并不安全。你知道吗。