我需要用数组中的字符串替换某个字符串(问号)的多个实例。例如如果我想要替换的字符串出现3次而我的数组长度为3,则第一个将被数组中的第一个项目替换,第二个将替换为第二个等等。
你可能认识到它与mysqli中预备语句的工作方式非常相似。
以下是一个例子:
$myArray = array( [0] => 'yellow', [1] => 'green', [2] => 'red' ); $myString = 'banana is ?, apple is ?, tomato is ?'; $newString = someFunction($myString,$myArray); echo $newString;
然后返回
banana is yellow, apple is green, tomato is red
任何人都可以使用PHP 5.2建议一种方法。
答案 0 :(得分:5)
为什么不使用
$retString = vsprintf('banana is %s, apple is %s, tomato is %s', $myArray);
return $retString;
答案 1 :(得分:2)
在PHP 5.2中有点难看,因为你必须使用全局变量在回调之间传递信息,否则它会非常灵活。使用preg_replace_callback()
:
preg_replace_callback('!\?!', 'rep_array', $myString);
$i = 0;
function rep_array($matches) {
global $myArray;
return $myArray[$i++];
}
你必须满足比数组条目更多的?
s,以及每次调用时重置计数器。
Adam对于sprintf()
更加清晰,但你并不总是控制输入字符串。 preg_replace_callback
可以满足更广泛的环境。