使用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);
注意:我特别不是在讨论使用vsprintf()
传递数组,因为只有1个值。对我来说,多次传递相同的值似乎毫无意义。
由于
答案 0 :(得分:2)
是和是。
它不起作用,因为您正在评估$s
中的str_replace
。根据经验,我在声明字符串文字时始终使用'
而不是"
。
$name = 'Bill';
$string = 'hello ?, your name is ? ';
$string = sprintf(str_replace('?','\'%1$s\'',$string ),$name);