Does PHP have an equivalent to this type of Python string substitution?
<p>Python has this wonderful way of handling string substitutions using dictionaries:</p>

<pre><code>&gt;&gt;&gt; 'The %(site)s site %(adj)s because it %(adj)s' % {'site':'Stackoverflow', 'adj':'rocks'}
'The Stackoverflow site rocks because it rocks'
</code></pre>

<p>I love this because you can specify a value once in the dictionary and then replace it all over the place in the string.</p>

<p>I've tried to achieve something similar in PHP using various string replace functions but everything I've come up with feels awkward.</p>

<p>Does anybody have a nice clean way to do this kind of string substitution in PHP?</p>

<p><em><strong>Edit</em></strong><br>
Here's the code from the sprintf page that I liked best.  </p>

<pre><code>&lt;?php

function sprintf3($str, $vars, $char = '%')
{
    $tmp = array();
    foreach($vars as $k =&gt; $v)
    {
        $tmp[$char . $k . $char] = $v;
    }
    return str_replace(array_keys($tmp), array_values($tmp), $str);
}

echo sprintf3( 'The %site% site %adj% because it %adj%', array('site'=&gt;'Stackoverflow', 'adj'=&gt;'rocks'));
?&gt;
</code></pre>

<pre><code>function subst($str, $dict){
    return preg_replace(array_map(create_function('$a', 'return "/%\\($a\\)s/";'), array_keys($dict)), array_values($dict), $str);
 }
</code></pre>

<p>You call it like so:</p>

<pre><code>echo subst('The %(site)s site %(adj)s because it %(adj)s', array('site'=&gt;'Stackoverflow', 'adj'=&gt;'rocks'));
</code></pre>
