La chaîne de format est utilisée par certaines fonctions (sscanf, printf, sprintf) en tant qu'argument afin de convertir précisément une chaîne de caractères par rapport à un masque.

sprintf($format, $texte);

$format = "%[-]['{caractère}{taille}][nombre].[précision]type";
// justifie une chaîne de caractères à droite
$format = "%-'<30s";

// formate une date 25/12/2001
$format= "%02d/%02d/%04d";

Les chaînes de format peuvent être constituées de plusieurs parties comme des chaînes de caractères associées à des expressions de formatage précédées du signe de pourcentage (%).

$format = "Le %02d/%02d/%04d, à %s, monsieur %s %s déclare...";

Les expressions de formatage comprennent un signe pourcentage suivi d'un ou plusieurs arguments optionnels et du type de donnée.

Un argument optionnel d'alignement précise la justification de la chaîne résultante, à gauche (par défaut) ou à droite. Le tiret (-) permet de justifier la chaîne de caractères à droite.

// aligne la chaîne à droite '..............chaîne'
$format = "%-'.20s";

// aligne la chaîne à gauche 'chaine................'
$format = "%'.20s";

Une option de remplissage spécifie quel caractère sera utilisé pour complèter une chaîne de caractère jusqu'à une taille définie.

Le caractère de remplissage peut être :

  • soit un espace simple (valeur par défaut),
  • soit le caractère zéro (0),
  • soit une valeur définie par l'intermédiaire d'un guillemet simple (') précédant la définition.
<?php
  $taille_champ = 30;
  $caractere = "_";

  // $format = "%'_30s";
  $titre = "PHP 4 et MySQL";
  $champ = sprintf ("%'{$taille_champ}{$caractere}s", $livre);
  echo $champ . "<br>";

  $livre = "PHP Précis et concis";
  $champ =  sprintf ("%'{$taille_champ}{$caractere}s", $livre);
  echo $champ . "<br>";
?>

L'argument optionnel nombre indique le nombre minimum de caractères à afficher dans la chaîne résultante. Pour des chiffres, ce paramètre précisera le remplissage à appliquer.

$chiffre = 2;
$format = "%d";
echo printf($format, $chiffre);
// affiche 2

$format = "%04d";
// affiche 0002

L'argument optionnel de précision indique le nombre de chiffres utilisé pour afficher un nombre à virgule flottante. Ce pramètre doit être séparé du paramètre nombre par un point (.).

$chiffre = 1520.3697;
$format = "%01.2f";

echo printf($format, $chiffre);
// affiche 1520.36

$format = "%09.3f";
// affiche 000001520.369

L'argument type est obligatoire et spécifie le type de données de la valeur sujette au formatage.

$format = "%type";

// chaîne de format pour les chaîne de caractères.
$format = "%s";

// chaîne de format pour les nombres à virgule flottante.
$format = "%12.6f";
Format Description
% le signe pourcentage ne nécessite aucun argument.
b la valeur attendue est un entier représenté comme un nombre binaire.
c la valeur attendue est un entier représenté comme un nombre ASCII.
d la valeur attendue est un entier représenté comme un nombre décimal.
u la valeur attendue est un entier représenté comme un nombre décimal non signé.
f la valeur attendue est un double représenté comme un nombre à virgule flottante.
o la valeur attendue est un entier représenté comme un nombre octal.
s la valeur est une chaîne de caractères représentée comme telle.
x la valeur attendue est un entier représenté en minuscules comme un nombre hexadécimal.
X la valeur attendue est un entier représenté en majuscules comme un nombre hexadécimal.

Une séquence de caractères spécifique ('nombre\$') permet de numéroter les expressions de formatage par rapport aux variables passées en argument dans la fonction.

<?php
  $numero = 12;
  $titre = "Les fonctions ODBC";

  $format = "Chapître N° %d - %s";
  printf($format, $numero, $titre);
  // retourne 'Chapître N° 12 - Les fonctions ODBC'

  $format = "¤ %-'.80s %02d";
  /* passage d'arguments erroné, le type
     de donnée ne correspondant pas. */

  $format = "¤ %2\$-'.80s %1\$02d";
  // retourne 'Les fonctions ODBC..................................12'
?>