printf()
La fonction PHP printf() affiche une chaîne formatée selon un modèle. Découvrez sa syntaxe, ses spécificateurs et les fonctions associées.
La fonction PHP printf() affiche une chaîne formatée selon un modèle. Contrairement à echo, qui concatène et affiche les valeurs telles quelles, printf() vous permet de contrôler précisément l'apparence de chaque valeur — sa largeur, son nombre de décimales, son rembourrage, son signe et sa base numérique — en insérant des spécificateurs de format (des espaces réservés tels que %s ou %.2f) dans une chaîne de format. C'est l'outil idéal lorsque la mise en page de la sortie est importante : tableaux alignés, montants avec deux décimales, identifiants complétés par des zéros ou codes de couleur hexadécimaux.
Cette page couvre la syntaxe, l'anatomie d'un spécificateur de format, les conversions les plus courantes avec des exemples exécutables, et les fonctions étroitement liées de la même famille.
Syntaxe
printf(string $format, mixed ...$values): int$format— une chaîne de modèle contenant du texte littéral et un ou plusieurs spécificateurs de format.$values— les valeurs substituées dans les spécificateurs, dans l'ordre.- Retourne le nombre de caractères écrits (la longueur de la sortie), pas la chaîne elle-même.
printf()imprime directement sur la sortie. Si vous souhaitez que la chaîne formatée soit retournée au lieu d'être imprimée, utilisezsprintf().
Un exemple de base
%s est remplacé par le premier argument ($name) formaté en tant que chaîne, et %d par le second ($age) formaté en tant qu'entier signé. Le résultat est :
My name is John Doe and I am 35 years old.Anatomie d'un spécificateur de format
Chaque spécificateur commence par % et peut inclure des parties optionnelles dans cet ordre :
%[argnum$][flags][width][.precision]specifier- flags — p. ex.
0(compléter avec des zéros),-(justifier à gauche),+(toujours afficher le signe),' '(un espace complète avec ce caractère). - width — le nombre minimum de caractères occupés par le champ.
- .precision — pour les flottants, le nombre de chiffres après la virgule ; pour les chaînes, la longueur maximale.
- specifier — le type de conversion (voir ci-dessous).
Pour afficher un signe pourcentage littéral, échappez-le avec %%.
Spécificateurs de conversion courants
| Spécificateur | Convertit l'argument en |
|---|---|
%s | une chaîne |
%d | un entier décimal signé |
%f | un nombre à virgule flottante |
%b | binaire |
%o | octal |
%x / %X | hexadécimal minuscule / majuscule |
%e | notation scientifique |
%% | un % littéral |
Largeur, précision et rembourrage
C'est là que printf() révèle tout son intérêt. L'exemple ci-dessous formate un prix avec deux décimales, complète un identifiant à 5 chiffres avec des zéros, et affiche un nombre sous forme de couleur hexadécimale :
<?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);
?>Résultat :
Price: $7.50
Order ID: 00042
Color: #FF0000%.2f force exactement deux décimales, %05d complète l'entier avec des zéros jusqu'à une largeur de 5, et %06X produit un hexadécimal majuscule complété à 6 chiffres.
Permutation des arguments
Un spécificateur peut désigner l'argument qu'il utilise avec n$, vous permettant ainsi de réutiliser une valeur ou de réordonner les arguments sans modifier la liste — pratique pour les chaînes traduisibles où l'ordre des mots diffère selon la langue :
<?php
printf('%1$s likes %2$s. %2$s likes %1$s too.', 'Ann', 'tea');
?>Résultat :
Ann likes tea. tea likes Ann too.La famille printf
printf() appartient à une famille de fonctions qui partagent exactement la même syntaxe de format, mais diffèrent dans ce qu'elles font du résultat :
sprintf()— retourne la chaîne formatée au lieu de l'imprimer. À utiliser lorsque vous devez stocker ou traiter davantage le résultat.vprintf()— commeprintf(), mais prend les valeurs sous forme d'un seul tableau (vprintf($format, $args)), utile lorsque les arguments se trouvent déjà dans un tableau.fprintf()— écrit la chaîne formatée dans un flux ou un descripteur de fichier plutôt que sur la sortie standard.
Pour le formatage des nombres selon la locale (séparateurs de milliers, devise), utilisez plutôt number_format().
Quand l'utiliser
Optez pour printf() (ou sprintf()) lorsque la mise en page de la sortie est importante : colonnes alignées, montants avec décimales fixes, identifiants complétés par des zéros, ou génération de chaînes comme des couleurs hexadécimales et des URL. Pour une sortie simple où le formatage n'est pas pertinent, echo est plus simple et plus rapide.