phpprintf

Access a variable more than once in the format string of sprintf()


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??


Solution

  • 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.