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.
1 |
printf("Hay %d elementos en tu cesta", 3); |
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
1 |
printf("El número en decimal %d es %o en Octal y %X en hexadecimal", 30, 30, 30); |
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.
1 |
printf("<p style='color:#%X%X%X'>Hola mundo</p>", 43, 135, 100); |
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.
1 2 |
$r=255;$g=255;$b=255; printf("<p style='color:#%X%X%X'>Hola mundo</p>", $r-35, $g-55, $b-200); |
Y hasta aquí cómo dar formato mediante la función printf de PHP, espero que os haya gustado. A seguir picando 🙂