php sprintf用一个值替换多个占位符

时间:2012-03-16 20:14:55

标签: php str-replace printf

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

我实际上是将它用作参数化的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.是否可以编写单个语句来处理单个或多个占位符?
  2. 注意:我特别不是在讨论使用vsprintf()传递数组,因为只有1个值。对我来说,多次传递相同的值似乎毫无意义。

    由于

1 个答案:

答案 0 :(得分:2)

是和是。

它不起作用,因为您正在评估$s中的str_replace。根据经验,我在声明字符串文字时始终使用'而不是"

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