Listado completo de tutoriales

Temario del Tutorial45 - Formateo de datos en una página (printf)


Hasta ahora siempre hemos impreso dentro de la página, utilizando el comando echo, pero en ocasiones que necesitamos mayor control sobre el formato de impresión, podemos utilizar la función printf.

La función printf requiere como primer parámetro una cadena de control donde se indica cómo deben imprimirse el resto de parámetros de la misma función.

El siguiente ejemplo muestra el contenido de una variable entera con distintos formatos, lo mismo hacemos para una variable de tipo double:

pagina1.php

<html>

<head>
  <title>Problema</title>
</head>

<body>
  <?php
  $entero = 255;
  printf("Valor entero en formato decimal %d <br>", $entero);
  printf("Valor entero en formato hexadecimal con letras minúsculas %x<br>", $entero);
  printf("Valor entero en formato hexadecimal con letras mayúsculas %X<br>", $entero);
  printf("Valor entero en formato binario %b<br>", $entero);
  printf("Valor entero en formato octal %o<br>", $entero);
  $letra = 65;
  printf("Valor entero como caracter ascii %c<br>", $letra);
  echo "<br>";
  $real = 10.776;
  printf("Impresion de un valor de tipo double %f <br>", $real);
  printf("Impresion de un valor de tipo double indicando la cantidad de decimales a imprimir %0.2f <br>", $real);
  ?>
  <br>
  <A href="pagina2.php">Algunas utilidades de estas conversiones</A>
</body>

</html>

Como podemos ver, es posible imprimir el contenido de una variable entera en formato ASCII, decimal, hexadecimal, octal. Y con una variable de tipo double, la podemos restringir la cantidad de decimales que deben aparecer.

La función printf sustituye todos los lugares en los cuales encuentra el caracter %, por el valor que le pasamos desde el segundo parámetro en adelante. Si queremos imprimir este caracter: %, con la función printf, debemos disponer dos: %%.

Podemos ver un uso común para cuando imprimamos valores de tipo double y necesitemos restringir a una determinada cantidad de decimales. Pero las otras conversiones, ¿nos servirán?

Veamos una utilidad de la función printf formateando a tipo de dato hexadecimal:

<html>

<head>
  <title>Problema</title>
</head>

<body style="background:<?php printf("#%X%X%X", 150, 150, 100); ?>">
  Esta página definimos el color de fondo indicando la cantidad
  de rojo,verde y azul en formato decimal y solicitando a la
  función printf que haga la conversión a hexadecimal.<br><br>
  <a href="pagina3.php">último ejemplo</a>
</body>

</html>

La función printf puede formatear n datos en una única llamada, como ocurre en este caso:

<body style="background:<?php printf("#%X%X%X",150,150,100); ?>">

Cuando tenemos los tres valores en formato decimal, para crear un color, la función printf nos facilita la tarea de generar el color definitivo en hexadecimal.


Por último, con la función printf, podemos determinar el número de caracteres que va a ocupar o en su defecto se rellenará con ceros:

<html>

<head>
  <title>Problema</title>
</head>

<body>
  <?php
  $dia = 6;
  $mes = 5;
  $anio = 2019;
  printf("%02d/%02d/%d", $dia, $mes, $anio);
  ?>
</body>

</html>

Con esto logramos que una fecha aparezca con el día y el mes siempre de dos dígitos.

Si deseamos rellenar con otro carácter debemos disponer una simple comilla y el carácter a rellenar:

$importe=170;
printf("Valor:$%'x7d",$importe);


Problema resuelto.

Copiar el contenido de este cuadro de texto al VS Code y almacenarlo en la carpeta c:\xampp\htdocs con un nombre con extensión php.
luego abrir el navegador (Chrome, FireFox, IExplorer etc.) y en la barra de direcciones tipear:
http://localhost/pagina1.php (o el nombre del archivo que le dió)

pagina1.php

Ejecutar ejemplo

pagina2.php


pagina3.php

Problema propuesto.

Confeccionar un formulario que solicite la carga del nombre de una persona, su mail y un importe que desea donar.

En la página que procesa los datos ingresados, mostrar el importe a donar rellenando con ceros, por ejemplo: $0000170 dolares.

Solución
pagina1.php

Ejecutar ejemplo
pagina2.php

Retornar