Sprintf en PHP

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.

Leave a reply