2012-03-16 34 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