Sprintf en 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
Tipo | Especificador |
---|---|
string | s |
integer | d , u , c , o , x , X , b |
double | g , 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.