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 :
<?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'
?>