是否可以在一个字符串中多次替换一个子字符串,但使用不同的替换?我知道这可以用循环和str_replace()
完成,但我发誓必须有一个更简单的方法!多次替换一个子串而不循环? (使用一系列替换)
例子:
<?php
// Returns '1.2.3';
echo str_replace('%', array(1, 2, 3), '%.%.%');
?>
我真的需要开始上线一个循环,然后在同一时间更换一个比赛?这似乎是一个马虎的做法,应该更简单。我错过了什么?
是否可以在一个字符串中多次替换一个子字符串,但使用不同的替换?我知道这可以用循环和str_replace()
完成,但我发誓必须有一个更简单的方法!多次替换一个子串而不循环? (使用一系列替换)
例子:
<?php
// Returns '1.2.3';
echo str_replace('%', array(1, 2, 3), '%.%.%');
?>
我真的需要开始上线一个循环,然后在同一时间更换一个比赛?这似乎是一个马虎的做法,应该更简单。我错过了什么?
正如Scuzzy在评论中推荐的那样,vsprintf()
原来是我正在寻找的。谢谢!
这应该使用str_ireplace(注意我)。我不确定,但它应该像这样工作:str_ireplace(array('%', '%', '%'), array(1, 2, 3), '%.%.%')
。我现在没有办法测试它。
虽然这会起作用,但解决这个问题并不是一个好方法。我不仅需要创建一个重复相同值的数组,但是我必须事先知道参数的数量,然后循环遍历这些参数来构建第一个参数的数组。 – Nathanael 2012-08-13 02:14:00
这可能是[sprintf()](http://php.net/manual/en/function.sprintf.php)甚至是[vsprintf()]的一份工作(http://www.php.net /manual/en/function.vsprintf.php)? – Scuzzy 2012-08-13 01:41:51
是你的原始字符串文字'%'?还是仅仅是一个例子? – 2012-08-13 01:45:23
sprintf或vsprintf应该变成答案 – Toote 2012-08-13 01:46:12