(PHP 4, PHP 5)
sprintf — Retourne une chaîne formatée
Retourne une chaîne formatée, avec le format format , en utilisant les arguments args .
La chaîne de format est composée de zéro, une ou plusieurs directives : les caractères ordinaires (à l'exception de %) qui sont copiés directement dans le résultat, et des spécifications de conversion, qui exploitent chacune un des arguments passés après la chaîne de format. Ces formats s'appliquent à sprintf() et printf().
Chaque spécification de conversion est constituée d'un signe de pourcentage (%), suivi d'un ou plusieurs des éléments suivants, dans cet ordre :
Un spécificateur de type qui indique le type avec lequel l'argument sera traité. Plusieurs types possibles :
La chaîne de format supporte le numérotage et l'échange d'arguments. Par exemple :
Exemple #1 Échange d'arguments
<?php
$format = 'Il y a %d singes dans le %s';
printf($format, $num, $location);
?>
Ainsi, cet exemple peut afficher : "Il y a 5 singes dans le bananier". Mais imaginez que la chaîne de format soit créée dans un script séparé, comme une bibliothèque : cela arrive lorsqu'il faut internationaliser une application. Suivant la langue, il faudra peut-être écrire :
Exemple #2 Échange d'arguments (2)
<?php
$format = 'Le %s a %d singes';
printf($format, $num, $location);
?>
Ici, nous voyons bien le problème. L'ordre des arguments a été changé, et ne correspond plus à l'ordre des arguments dans le script PHP. Nous souhaitons laisser le code PHP intact, mais simplement indiquer dans la chaîne de formatage l'ordre dans lequel les arguments doivent être utilisés. La chaîne de format peut être réécrite ainsi :
Exemple #3 Échange d'arguments (3)
<?php
$format = 'Le %2$s a %1$d singes';
printf($format, $num, $location);
?>
Un des avantages est que vous pouvez désormais exploiter plusieurs fois les arguments sans les répéter. Ainsi :
Exemple #4 Échange d'arguments (4)
<?php
$format = 'Le %2$s a %1$d singes.
C\'est un beau %2$s avec %1$d singes.';
printf($format, $num, $location);
?>
Retourne une chaîne de caractères créée suivant le format format .
Version | Description |
---|---|
4.0.6 | Ajout du support de l'argument d'échange |
Exemple #5 printf() : divers exemples
<?php
$n = 43951789;
$u = -43951789;
$c = 65; // ASCII 65 is 'A'
// notez le double %%, cela affiche un caractère '%' littéral
printf("%%b = '%b'\n", $n); // représentation binaire
printf("%%c = '%c'\n", $c); // affiche le caractère ascii, comme la fonction chr()
printf("%%d = '%d'\n", $n); // représentation standard d'un entier
printf("%%e = '%e'\n", $n); // notation scientifique
printf("%%u = '%u'\n", $n); // représentation entière non signée d'un entier positif
printf("%%u = '%u'\n", $u); // représentation entière non signée d'un entier négatif
printf("%%f = '%f'\n", $n); // représentation en virgule flottante
printf("%%o = '%o'\n", $n); // représentation octale
printf("%%s = '%s'\n", $n); // représentation chaîne de caractères
printf("%%x = '%x'\n", $n); // représentation hexadécimal (minuscule)
printf("%%X = '%X'\n", $n); // représentation hexadécimal (majuscule)
printf("%%+d = '%+d'\n", $n); // indication du signe pour un entier positif
printf("%%+d = '%+d'\n", $u); // indication du signe pour un entier négatif
?>
L'exemple ci-dessus va afficher :
%b = '10100111101010011010101101' %c = 'A' %d = '43951789' %e = '4.39518e+7' %u = '43951789' %u = '4251015507' %f = '43951789.000000' %o = '247523255' %s = '43951789' %x = '29ea6ad' %X = '29EA6AD' %+d = '+43951789' %+d = '-43951789'
Exemple #6 printf() : spécificateurs chaînes de caractères
<?php
$s = 'monkey';
$t = 'many monkeys';
printf("[%s]\n", $s); // affichage d'une chaîne standard
printf("[%10s]\n", $s); // justification à droite avec des espaces
printf("[%-10s]\n", $s); // justification à gauche avec des espaces
printf("[%010s]\n", $s); // l'espacement nul fonctionne aussi sur les chaînes
printf("[%'#10s]\n", $s); // utilisation du caractère personnalisé de séparation '#'
printf("[%10.10s]\n", $t); // justification à gauche mais avec une coupure à 10 caractères
?>
L'exemple ci-dessus va afficher :
[monkey] [ monkey] [monkey ] [0000monkey] [####monkey] [many monke]
Exemple #7 sprintf() : entier sans espace
<?php
$isodate = sprintf("%04d-%02d-%02d", $year, $month, $day);
?>
Exemple #8 sprintf() : formatage de devises
<?php
$money1 = 68.75;
$money2 = 54.35;
$money = $money1 + $money2;
// echo $money affichera "123.1";
$formatted = sprintf("%01.2f", $money);
// echo $formatted affichera "123.10"
?>
Exemple #9 sprintf(): notation scientifique
<?php
$number = 362525200;
echo sprintf("%.3e", $number); // affiche 3.625e+8
?>