(PHP 4, PHP 5)
sprintf — Retourne une chaîne formatée
sprintf
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 :
% : un caractère de pourcentage littéral. Aucun argument n'est nécessaire. |
b : l'argument est traité comme un entier, et présenté comme un nombre binaire. |
c : l'argument est traité comme un entier, et présenté comme le caractère de code ASCII correspondant. |
d : l'argument est traité comme un entier, et présenté comme un nombre décimal signé. |
e : l'argument est traité comme une notation scientifique (e.g. 1.2e+2 ). Le spécificateur de précision représente le nombre de chiffres après la virgule depuis PHP 5.2.1. Dans les versions antérieures, il a été pris comme nombre des chiffres significatifs (au moins un). |
u : l'argument est traité comme un entier, et présenté comme un nombre décimal non signé. |
f : l'argument est traité comme un nombre à virgule flottante (type float ), et présenté comme un nombre à virgule flottante (tenant compte de la locale utilisée). |
F : l'argument est traité comme un nombre à virgule flottante (type float ), et présenté comme un nombre à virgule flottante (ne tenant pas compte de la locale utilisée). Disponible depuis PHP 4.3.10 et PHP 5.0.3. |
o : l'argument est traité comme un entier, et présenté comme un nombre octal. |
s : l'argument est traité et présenté comme une chaîne de caractères. |
x : l'argument est traité comme un entier, et présenté comme un nombre hexadécimal (les lettres en minuscules). |
X : l'argument est traité comme un entier, et présenté comme un nombre hexadécimal (les lettres en majuscules). |
Depuis PHP 4.0.6, la chaîne de format supporte le numérotage et l'échange d'arguments. Par exemple :
Exemple 2605. Echange d'arguments
<?php
$format
=
'Il y a %d singes dans le %s'
;
printf
(
$format
,
$num
,
$location
);
?>
Exemple 2606. Echange d'arguments (2)
<?php
$format
=
'Le %s a %d singes'
;
printf
(
$format
,
$num
,
$location
);
?>
Exemple 2607. Echange d'arguments (3)
<?php
$format
=
'Le %2\$s a %1\$d singes'
;
printf
(
$format
,
$num
,
$location
);
?>
Exemple 2608. Echange 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);
?>
Voir aussi printf() , sscanf() , fscanf() , vsprintf() et number_format() .
Exemple 2609. sprintf() : exemples divers
<?php
$n
=
43951789
;
$u
= -
43951789
;
$c
=
65
;
// ASCII 65 est un '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 2610. sprintf() : 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 2611. sprintf() : entier sans espace
<?php
$isodate
=
sprintf
(
"%04d-%02d-%02d"
,
$year
,
$month
,
$day
);
?>
Exemple 2612. 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 2613. sprintf() : notation scientifique
<?php
$number
=
362525200
;
echo
sprintf
(
"%.3e"
,
$number
);
// affiche 3.625e+8
?>