sprintf

sprintf($format, $value1, $value2, …)

Renvoie une chaîne construite à partir du modèle $format, dans lequel elle insère tour à tour les autres paramètres. Utile pour un nombre fixe de décimales, pour compléter un nombre par des zéros ou pour aligner du texte. printf() fait la même chose, mais affiche aussitôt le résultat.

Paramètres

  • $format – texte avec des espaces réservés qui commencent par le signe %.
  • $value1, $value2, … – valeurs insérées dans l’ordre indiqué à la place des espaces réservés.

Espaces réservés les plus courants

  • %s – chaîne.
  • %d – nombre entier.
  • %.2F – nombre décimal avec 2 décimales (%f fait de même, mais dépend du réglage de setlocale()).
  • %05d – nombre complété à gauche par des zéros jusqu’à 5 caractères.
  • %10s / %-10s – texte aligné à droite / à gauche sur une largeur de 10 caractères.
  • %% – le signe pour cent lui-même.
  • %2$s – utilise le deuxième paramètre (l’ordre peut être fixé à la main).

Exemples

echo sprintf("L'utilisateur %s a %d articles.", "Garth", 37); // L'utilisateur Garth a 37 articles.
// décimales et remplissage par des zéros
echo sprintf("%.2F", 3.14159); // 3.14
echo sprintf("%05d", 42); // 00042
echo sprintf("Facture n° %04d/%d", 7, 2026); // Facture n° 0007/2026
echo sprintf("%02d/%02d/%d", 5, 9, 2026); // 05/09/2026
// le signe pour cent s'écrit en double
echo sprintf("Remise %d%%", 20); // Remise 20%
// ordre des paramètres (entre apostrophes, pour que PHP ne prenne pas $s pour une variable)
echo sprintf('%2$s %1$s', "tout le monde", "Bonjour"); // Bonjour tout le monde
// alignement sur une largeur de 10 caractères
echo sprintf("[%10s]", "PHP"); // [       PHP]
echo sprintf("[%-10s]", "PHP"); // [PHP       ]
// %d convertit la valeur en nombre entier
echo sprintf("%d", "12abc"); // 12
echo sprintf("%d", 9.99); // 9
// printf affiche aussitôt le résultat
printf("Terminé : %.1F%%", 99.5); // Terminé : 99.5%

Points d’attention

  • S’il y a moins de paramètres que d’espaces réservés, PHP 7 renvoie false avec l’avertissement « Too few arguments », PHP 8 lance une exception ArgumentCountError.
  • %d n’arrondit pas un nombre décimal, il le tronque (9.99 → 9). Pour arrondir, utilisez %.0F ou appelez d’abord round().
  • Pour formater avec un séparateur des milliers (1 234,50), number_format() est plus pratique.
  • sprintf ne protège en rien les valeurs – affichez-les en HTML avec htmlspecialchars() et ne les insérez pas dans une requête SQL, utilisez des requêtes préparées.

Fonctions associées :
number_format()
str_pad()
round()
printf()
fprintf()