用数组PHP顺序替换字符

用数组PHP顺序替换字符,php,Php,我奉命将我们的网站本地化。啊 在我们的通知系统中存在问题。 例子: 您有3条新消息 我希望本地字符串看起来像: You have % new messages 然后传递该数字并用该数字替换% 然而,如果我有一些我想要多个数字的东西,比如: You have % new messages, and % alerts 我想在一个数组中传递两个数字来替换第一个和第二个% 例如: $local->get(alert.message, array(3, 4)) alert.message响应您

我奉命将我们的网站本地化。啊

在我们的通知系统中存在问题。 例子: 您有3条新消息

我希望本地字符串看起来像:

You have % new messages
然后传递该数字并用该数字替换%

然而,如果我有一些我想要多个数字的东西,比如:

You have % new messages, and % alerts
我想在一个数组中传递两个数字来替换第一个和第二个%

例如:

$local->get(alert.message, array(3, 4))
alert.message响应
您有%的新邮件和%的警报


最后的输出变成:
您有3条新消息和4条警报

您可以使用
preg\u replace
设置替换次数的限制。使用此选项,您可以执行以下操作:

$str = "You have % new messages, and % alerts";
$array = [3, 4];

foreach ($array as $a)
    $str = preg_replace("/%/", $a, $str, 1);

您可以使用
preg_replace
设置替换次数的限制。使用此选项,您可以执行以下操作:

$str = "You have % new messages, and % alerts";
$array = [3, 4];

foreach ($array as $a)
    $str = preg_replace("/%/", $a, $str, 1);

不给你代码(同意火影忍者的建议),但应该能够提供帮助;-)

不给你代码(同意火影忍者的建议),但应该能够帮助你;-)

您也可以使用
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
,但它确实将其打包成一个函数

使用命名参数也使代码更易于阅读


值得注意的是,这对于安全设备来说是不安全的。正如您所知。

您也可以使用
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
,但它确实将其打包成一个函数

使用命名参数也使代码更易于阅读


值得注意的是,这对于安全性的东西来说是不安全的。正如你所知。

好的,你看了你要找的东西了吗?是的,这正是我需要的。谢谢@AndrewAlright,你看了你要找的东西了吗?是的,这正是我需要的。谢谢@Andrew