2011-10-06 14 views
23

Voglio formattare una stringa con sprintf ma ripetere molte volte un argomento. vedere ..sprintf - argomenti ripetuti

$str = "Str 1: %s - Str 2: %s - Str 2 again: %s"; 

Considerando che stringa da formattare, voglio ripetere il secondo arg due volte.

echo sprintf($str, "I'm string 1", "My name is string 2"); 

E il risultato desiderato come:

Str 1: I'm string 1 - Str 2: My name is string 2 - Str 2 again: My name is string 2 

C'è un modo per farlo ??

risposta

47

È tutto nel documentation!

$str = 'Str 1: %1$s - Str 2: %2$s - Str 2 again: %2$s'; 
echo sprintf($str, "I'm string 1", "My name is string 2"); 

Nota: utilizzare virgolette singole per la stringa di formato altrimenti si otterrà PHP Notice: Undefined variable: s in/path/to/tofile: linea

Si può anche sfuggire alla $ con a \ se si utilizzano le virgolette doppie.

+0

Il mio errore, è chiaro sui documenti! Grazie. –