W3docs

printf()

La función printf() de PHP genera una cadena formateada según una plantilla, controlando decimales, relleno, ancho y base numérica.

La función printf() de PHP genera una cadena formateada según una plantilla. A diferencia de echo, que simplemente concatena e imprime valores tal como son, printf() te permite controlar exactamente cómo aparece cada valor — su ancho, número de decimales, relleno, signo y base numérica — insertando especificadores de formato (marcadores de posición como %s o %.2f) en una cadena de formato. Es la herramienta adecuada cuando importa el diseño de la salida: tablas alineadas, dinero con dos decimales, IDs con ceros a la izquierda o códigos de color hexadecimales.

Esta página cubre la sintaxis, la anatomía de un especificador de formato, las conversiones más comunes con ejemplos ejecutables y las funciones relacionadas de la misma familia.

Sintaxis

printf(string $format, mixed ...$values): int
  • $format — una cadena de plantilla que contiene texto literal más uno o más especificadores de formato.
  • $values — los valores sustituidos en los especificadores, en orden.
  • Devuelve el número de caracteres escritos (la longitud de la salida), no la cadena en sí. printf() imprime directamente en la salida. Si deseas que la cadena formateada se devuelva en lugar de imprimirse, usa sprintf().

Un ejemplo básico

php— editable, runs on the server

%s es reemplazado por el primer argumento ($name) formateado como cadena, y %d por el segundo ($age) formateado como entero con signo. La salida es:

My name is John Doe and I am 35 years old.

Anatomía de un especificador de formato

Cada especificador comienza con % y puede incluir partes opcionales en este orden:

%[argnum$][flags][width][.precision]specifier
  • flags — p. ej. 0 (rellenar con ceros), - (alinear a la izquierda), + (mostrar siempre el signo), ' ' (un espacio rellena con ese carácter).
  • width — el número mínimo de caracteres que ocupa el campo.
  • .precision — para números de punto flotante, el número de dígitos después del punto decimal; para cadenas, la longitud máxima.
  • specifier — el tipo de conversión (ver más abajo).

Para mostrar un símbolo de porcentaje literal, escápalo como %%.

Especificadores de conversión comunes

EspecificadorConvierte el argumento a
%suna cadena
%dun entero decimal con signo
%fun número de punto flotante
%bbinario
%ooctal
%x / %Xhexadecimal en minúsculas / mayúsculas
%enotación científica
%%un % literal

Ancho, precisión y relleno

Aquí es donde printf() demuestra su utilidad. El ejemplo a continuación formatea un precio con dos decimales, rellena un ID con ceros hasta 5 dígitos y representa un número como color hexadecimal:

<?php
$price = 7.5;
$id = 42;
$color = 16711680; // red

printf("Price: $%.2f\n", $price);
printf("Order ID: %05d\n", $id);
printf("Color: #%06X\n", $color);
?>

Salida:

Price: $7.50
Order ID: 00042
Color: #FF0000

%.2f fuerza exactamente dos decimales, %05d rellena el entero con ceros hasta un ancho de 5, y %06X produce hexadecimal en mayúsculas relleno a 6 dígitos.

Intercambio de argumentos

Un especificador puede nombrar qué argumento usa mediante n$, de modo que puedes reutilizar un valor o reordenar argumentos sin cambiar la lista — útil para cadenas traducibles donde el orden de las palabras varía según el idioma:

<?php
printf('%1$s likes %2$s. %2$s likes %1$s too.', 'Ann', 'tea');
?>

Salida:

Ann likes tea. tea likes Ann too.

La familia printf

printf() pertenece a una familia de funciones que comparten exactamente la misma sintaxis de formato pero difieren en lo que hacen con el resultado:

  • sprintf()devuelve la cadena formateada en lugar de imprimirla. Úsala cuando necesites almacenar o procesar más el resultado.
  • vprintf() — como printf(), pero toma los valores como un único array (vprintf($format, $args)), útil cuando los argumentos ya están en un array.
  • fprintf() — escribe la cadena formateada en un flujo/manejador de archivo en lugar de la salida estándar.

Para el formateo de números con configuración regional (separadores de miles, moneda), consulta number_format() en su lugar.

Cuándo usarlo

Recurre a printf() (o sprintf()) cuando importa el diseño de la salida: columnas alineadas, dinero con decimales fijos, identificadores con ceros a la izquierda o generación de cadenas como colores hexadecimales y URLs. Para salida simple donde el formato es irrelevante, echo es más simple y rápido.

Práctica

Práctica
¿Cuál es la función de printf (o sprintf) mencionada en el material enlazado?
¿Cuál es la función de printf (o sprintf) mencionada en el material enlazado?
Was this page helpful?