37

我有一个数组女巫匹配字符串占位符,如下所示:

"some text %s another text %s extra text %s"

和数组:

$array[0] match the first %s 
$array[1] match the second %s 
$array[2] match the third %s 

我认为可以使用 sprintf 函数来完成,如下所示:

$content = sprintf("some text %s another text %s extra text %s", $array);

但这返回了太少的参数错误,我尝试使用内爆:

$content = sprintf("some text %s another text %s extra text %s", implode(",",$array));

提前致谢

4

4 回答 4

71

使用vsprintf而不是sprintf. 它接受一个数组参数,从中格式化字符串。

$content = vsprintf("some text %s another text %s extra text %s", $array);
于 2012-11-10T20:17:51.230 回答
15

vsprintfPHP 5.6+的替代方案

sprintf("some text %s another text %s extra text %s", ...$array);
于 2016-09-16T09:30:26.577 回答
2

在这里你必须使用vsprintf()而不是sprintf().

sprintf()只接受普通变量作为参数。但是您试图将数组作为参数传递。

为此,您需要vsprintf()接受数组作为参数。

例如在你的情况下:

"some text %s another text %s extra text %s"

和数组:

$array[0] match the first %s 
$array[1] match the second %s 
$array[2] match the third %s 

要实现您想要的,您必须执行以下操作:

$output = vsprintf("some text %s another text %s extra text %s",$array);
echo $output;

输出:

some text match the first another text match the second extra text match the third
于 2017-07-02T23:08:25.107 回答
0
$rv = array(1,2,3,4);
sprintf('[deepak] yay [%s]', print_r($rv, true))
于 2018-01-06T01:03:58.363 回答