PHP - 使用数组中的相应值替换字符串中的项目

时间:2014-03-20 14:11:31

标签: php arrays string replace

我有一个字符串,例如

$str = "name is: ?, role is: ?";

我有一个数组,例如

$array = array('John','Carpenter');

我想将字符串中的每个替换为数组中的相应项,即第一个 John 替换为第二个 Carpenter 替换。

数组中的值数始终与字符串中的数量相同。

我已经提出以下代码来执行此操作:

for($i=0;$i<count($array);$i++) {
    $str = preg_replace('/\?/',$array[$i],$str,1);
}

我的问题是,这是我做我想做的最有效的方式吗?如果你知道一种方法,或者更有效的方法,请你发一个答案吗?

非常感谢。

2 个答案:

答案 0 :(得分:2)

您应该使用vsprintf来执行此操作:

$format = "name is: %s, role is: %s";
$array = array('John','Carpenter');

$str = vsprintf($format, $array);

echo $str;
// name is: John, role is: Carpenter

答案 1 :(得分:0)

使用preg_replace_callback(),每次匹配调用用户提供的函数,每次都可以返回不同的替换:

$i = 0;
$str = preg_replace_callback('/\?/', function ($m) use ($arr, &$i) {
    return $arr[$i++];
}, $str);