Sprintf en PHP

PHP

sprintf() es una función de PHP que sirve para formatear un string. Como parámetros le pasaremos una cadena y uno o varios argumentos.

Sintaxis

sprintf(format,arg1,arg2,arg++)

Parámetros

format: es requerido y en él incluiremos la cadena y el formato que necesitamos. Los posibles valores de formato serán:

  • %% – Símbolo de %
  • %b – Número binario
  • %c – El caracter según el código ASCII
  • %d – El argumento es tratado como un integer y presentado como un número decimal (con signo) (negativo, cero o positivo).
  • %e – el argumento es tratado como notación científica (e.g. 1.2e+2). El especificador de precisión indica el número de dígitos después del punto decimal a partir de PHP 5.2.1. En versiones anteriores, se tomó como el número de dígitos significativos (uno menos).
  • %E – como %e pero utiliza la letra mayúscula (e.g. 1.2E+2).
  • %u – el argumento es tratado como un integer y presentado como un número decimal sin signo.
  • %f – el argumento es tratado como un float y presentado como un número de punto flotante (consciente de la configuración regional).
  • %F – el argumento es tratado como un float y presentado como un número de punto flotante (no consciente de la configuración regional). Disponible desde PHP 4.3.10 y PHP 5.0.3.
  • %g – más corto de %e y %f.
  • %G – más corto de %E y %f.
  • %o – el argumento es tratado como un integer y presentado como un número octal.
  • %s – el argumento es tratado y presentado como un string.
  • %x – el argumento es tratado como un integer y presentado como un número hexadecimal (con las letras en minúsculas).
  • %X – el argumento es tratado como un integer y presentado como un número hexadecimal (con las letras en mayúsculas).

Tipos

TipoEspecificador
strings
integerd, u, c, o, x, X, b
doubleg, G, e, E, f, F

Ejemplo básico de sprintf

En este ejemplo utilizaremos una cadena de texto, en la que añadiremos el nombre de forma dinámica.

<?php
$my_name = "John";
echo sprintf("Hello, my name is %s.",$my_name); // Hello, my name is John. 
?> 

Ejemplo utilizando string + integer

En este ejemplo utilizaremos una cadena de texto, en la que añadiremos el nombre de forma dinámica y un valor de tipo integer.

<?php
$my_name = "John";
$my_age = 36;
echo sprintf("Hello, my name is %s and I´m %u years old.",$my_name,$my_age); // Hello, my name is John and I´m 36 years old. 
?>

Ejemplo utilizando string + integer + float

En este ejemplo utilizaremos una cadena de texto, un valor numérico y un valor decimal.

<?php
$my_name = "John";
$my_age = 36;
$my_money = 22.5;
echo sprintf("Hello! my name is %s, I´m %u years old and I have in my pocket %g€.",$my_name,$my_age,$my_money); //Hello! my name is John, I´m 36 years old and I have in my pocket 22.5€. 
?>

Ventajas

Las ventajas de utilizar sprintf() frente a por ejemplo, la concatenación son múltiples. En primer lugar, el código resulta mucho más legible, además de limitar los posibles errores de concatenación debido al uso de comillas simples y/o comillas dobles.

Si utilizamos el mismo texto en diferentes partes de nuestro código, nos evita tener que repetir la misma cadena en distintos lugares:

Por otro lado, si implementamos un sistema de traducción de nuestras cadenas, siempre resultará más sencillo las actualizaciones si la misma cadena no se repite en el código.

Escribe una respuesta