sprintf - repeating arguments

user898741 picture user898741 · Oct 6, 2011 · Viewed 23.2k times · Source

I want to format a string with sprintf but repeating many times an argument. see..

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

Considering that string to format, I want to repeat the second arg two times.

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

And the wanted result like:

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

There's a way to do that??

Answer

Savageman picture Savageman · Oct 6, 2011

It's all in the 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");

Note: Use single quotes for the format string otherwise you'll get PHP Notice: Undefined variable: s in /path/to/tofile:line

You can also escape the $ with a \ if you are using double quotes.