Python tiene esta maravillosa manera de manejar sustituciones de cadenas utilizando diccionarios:¿Tiene PHP un equivalente a este tipo de sustitución de cadena de Python?
>>> 'The %(site)s site %(adj)s because it %(adj)s' % {'site':'Stackoverflow', 'adj':'rocks'}
'The Stackoverflow site rocks because it rocks'
Me encanta esto porque se puede especificar un valor, una vez en el diccionario y luego reemplazarlo por todo el lugar en la cadena.
He tratado de lograr algo similar en PHP utilizando varias funciones de reemplazo de cadenas, pero todo lo que he encontrado se siente incómodo.
¿Alguien tiene una buena manera de hacer este tipo de sustitución de cadena en PHP?
Edición
Aquí está el código de la página sprintf que mejor me ha gustado.
<?php
function sprintf3($str, $vars, $char = '%')
{
$tmp = array();
foreach($vars as $k => $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'=>'Stackoverflow', 'adj'=>'rocks'));
?>
El Las soluciones sugeridas aquí hasta ahora deben tomarse como una respuesta "No" a la pregunta en el OP. Hasta ahora, ninguno de ellos parece replicar la funcionalidad de Python, y hay errores expresamente identificados esparcidos por todos lados. – dreftymac