Saltar al contenido

PHP equivalente del método `str.format` de Python?

Luego de consultar con especialistas en esta materia, programadores de deferentes áreas y maestros dimos con la respuesta al dilema y la plasmamos en esta publicación.

Solución:

sprintf es lo más cercano. Es el Python de estilo antiguo. string formato:

sprintf("my %s %s cat", "red", "fat")

Como PHP realmente no tiene una alternativa adecuada a str.format en Python, decidí implementar mi propio muy simple, que como la mayoría de las funciones básicas de Python.

function format($msg, $vars)

    $vars = (array)$vars;

    $msg = preg_replace_callback('#\#', function($r)
        static $i = 0;
        return ''.($i++).'';
    , $msg);

    return str_replace(
        array_map(function($k) 
            return ''.$k.'';
        , array_keys($vars)),

        array_values($vars),

        $msg
    );


# Samples:

# Hello foo and bar
echo format('Hello  and .', array('foo', 'bar'));

# Hello Mom
echo format('Hello ', 'Mom');

# Hello foo, bar and foo
echo format('Hello , 1 and 0', array('foo', 'bar'));

# I'm not a fool nor a bar
echo format('I'm not a foo nor a ', array('foo' => 'fool', 'bar'));
  1. No importa el orden,
  2. Puede omitir el nombre/número si desea que simplemente se incremente (el primero emparejado se transformará en 0etc.),
  3. Puede nombrar sus parámetros,
  4. Puedes mezclar los otros tres puntos.

Valoraciones y reseñas

Si conservas alguna vacilación y forma de arreglar nuestro escrito te insinuamos dejar un paráfrasis y con placer lo interpretaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *