Cómo dar formato a strings con printf de PHP

Este post se va a centrar en dar formato a cadenas de texto a través de la función printf de PHP. En ocasiones querremos mostrar un formato de texto específico cómo una fecha, un string o
cadena de texto compleja o incluso HTML.

A diferencia de las funciones print y echo que se centran en mostrar por pantalla un texto al navegador, printf  en PHP es mucho más poderosa al poder controlar el formato que vamos a mostrar por pantalla. Para conseguir esto, printf permite usar caracteres especiales en un string denominados especificadores. Para cada carácter formateado dentro del string, printf espera que pasemos el argumento que se va a mostrar dentro de ese formato. Por ejemplo, si empleamos %d pasaremos un carácter decimal.

El %d viene a indicar que ahí habrá un número decimal que en este caso es el 3. La función printf de PHP proporciona una serie de especificadores:

Opción Definición Ejemplo si pasamos 65
% Muestra el símbolo % (no necesita argumento) %
b Transforma un integer en binario 11011
c Pasando el valor ASCII vemos su correspondiente carácter A
d Permite mostrar un integer decimal 1000001
e Miestrar el argumento cómo una notación científica 4.39518e+7
f Permite mostrar el argumento como un float 43951789.000000
o El integer pasar a octal 247523255
s El argumento se muestra como un string 65
u Muestra el argumento como un decimal sin signo 65
x Permite mostrar el argumento en hexadecimal minúscula 29ea6ad
X Permite mostrar el argumento en hexadecimal mayúscula 29EA6AD

Pasar varios argumentos

Se puede emplear tantos especificadores como queramos dentro de la función printf siempre que tengamos en cuenta el orden de los argumentos o parámetros que vayamos pasando.  Por ejemplo, si quiero mostrar “El número en decimal 30 es  36 en Octal y 1E en hexadecimal” tengo que indicar los especificadores en el mismo orden que los argumentos que quiero dar formato

Si nos pasáramos de argumentos, recibiríamos un error de parseo indicando que los argumentos sobrantes no se esperaban.

Probando con código HTML

No sólo podemos dar formato a texto plano sino también código HTML que se mostrará en nuestro documento. Un ejemplo curioso sería aplicar color a un elemento HTML. Cuando aplicamos un color a un fondo a un texto en CSS es preciso indicar su valor en hexadecimal, concretamente 3 valores hexadecimales que representan la escala RGB. Por tanto, podemos meter los valores en decimal y que printf se encargue de pasarlos a hexadecimal.

Aqui hay que tener en cuenta que empleo los 2 tipos de comillas. En printf siempre se emplean comillas dobles para el string que vamos a pasar ya que de usar comillas simples, estaríamos pasando literalmente los especificadores es decir, verías %X%X%X.

Lo mejor de todo es que también podemos pasar variables como argumentos para poder modificar de forma más dinámica el formato.

Y hasta aquí cómo dar formato mediante la función printf de PHP, espero que os haya gustado. A seguir picando 🙂