2012-03-16 33 views
2

使用sprintf()如何用一个值替换字符串中的多个占位符?我通常知道每个占位符都会传递1个变量,但我知道如果使用格式%1$s而不是%s,您可以传递一个值,但我似乎无法使其工作。php sprintf用一个值替换多个占位符

实际上,我用这个作为parametrised SQL查询,但为了方便这里有一个简单的例子

$name = "Bill"; 
$string = "hello ?, your name is ? "; 
$string = sprintf(str_replace("?","'%1$s'",$string),$name); 

这似乎并没有工作。我也想让它适用于单个占位符,例如

$name = "Bill"; 
$string = "hello ?"; 
$string = sprintf(str_replace("?","'%1$s'",$string),$name); 
  1. 是否有可能从一个值取代多个占位符,并2.可在单个语句写入处理单个或多个占位符?

注意:我没有专门讨论使用vsprintf()来传递数组,因为只有1个值。似乎毫无意义地多次传递相同的值。

谢谢

回答

2

是的,是的。

它不起作用,因为您正在评估$sstr_replace。作为一个经验法则,当声明字符串文字时,我总是使用'而不是"

$name = 'Bill'; 
$string = 'hello ?, your name is ? '; 
$string = sprintf(str_replace('?','\'%1$s\'',$string),$name); 
+0

超级,它总是很简单!谢谢 – leejmurphy 2012-03-16 20:36:03