Description
string
sprintf
( string format [, mixed args])
sprintf
retourne
une
chaîne
formatée
,
avec
le
format
format
et
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
des
spécifications
de
conversion
,
qui
exploite
chacune
un
des
arguments
passé
après
la
chaîne
de
format
.
Ces
formats
s'
appliquent
à
sprintf(
)
et
printf(
)
.
Chaque
spécification
de
conversion
est
consistitué
d'
un
signe
de
pourcentage
(
%
)
,
suivi
d
'un
ou
plusieurs
des
éléments
suivants
,
dans
cet
ordre
:
-
Un
remplisseur
optionnel
qui
indique
quel
caractère
sera
utilisé
pour
compléter
le
résultat
jusqu
'
à
la
longueur
requise
.
Ce
peut
être
le
caractère
d
'
espace
,
ou
le
caractère
0
.
Par
défaut
,
le
remplissage
se
fait
avec
des
espaces
.
Un
autre
caractère
de
remplissage
peut
être
spécifié
en
le
préfixant
avec
un
guillemet
simple
(
'
)
:
voir
les
exemples
ci-dessous
.
-
Un
spécificateur
d
'
alignement
qui
indique
si
le
résultat
doit
être
aligné
à
gauche
ou
à
droite
.
Par
défaut
,
le
résultat
est
aligné
à
gauche
.
Le
caractère
-
fera
que
le
résultat
est
aligné
à
droite
.
-
Un
nombre
optionnel
,
spécificateur
de
taille
indique
le
nombre
minimum
de
caractères
que
cette
conversion
doit
fournir
en
résultat
.
-
Un
spécificateur
de
précision
qui
indique
le
nombre
de
décimales
qui
doivent
être
affichées
pour
les
nombres
à
virgule
flottante
.
Cette
option
n'
a
pas
d
'effet
pour
les
autres
types
que
float
.
Une
auter
fonction
pratique
pour
formatter
les
nombres
à
virgule
flottante
est
number_format(
)
.
-
Un
spécificateur
de
type
qui
indique
le
type
avec
lequel
l
'
argument
sera
traité
.
Plusieurs
types
possibles
:
%
-
un
caractère
de
pourcentage
lité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é
.
|
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
.
|
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
support
le
numérotage
et
l'
échange
d
'arguments
.
Par
exemple
:
Exemple
1
.
Echange
d
'
arguments
?php
$format
=
"
Il
y
a
%d
singes
dans
le
%s"
;
printf($format,$num,$location)
;
?
|
|
Ce exemple peut afficher par exemple : "Il y a 5 signes dans le
bananier". Mais imaginez que la chaîne de format soit créée dans
un script séparé (une librairie), ca nous devons
internationaliser cet affichage. Nous aurons peut être à écrire :
Exemple
2
.
Echange
d'
arguments
(2
)
?php
$format
=
"
Le
%s
a
%d
singes"
;
printf($format,$num,$location)
;
?
|
|
Maintenant, nous avnos un problème. L'ordre des arguments a été
changé, et ne correspond pas à l'ordre des arguments dans le
script PHP. Nous souhaitons laisser le code PHP tel quel, et
simplement indiquer dans la chaîne de formattage l'ordre dans
lequel les arguments doivent être repris. La chaîne de format
peut être réécrite ainsi :
Exemple
3
.
Echange
d'
arguments
(3
)
?php
$format
=
"
Le
%2\$s
a
%1\$d
signes"
;
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
.
Echange
d'
arguments
(4
)
?php
$format
=
"
Le
%2\$s
a
%1\$d
singes
.
C'
est
un
beau
%2\$s
,
avec
%1\$d
signes
."
;
printf($format
,
$num
,
$location)
;
?
|
|
Voir
aussi
printf(
)
,
sscanf(
)
,
fscanf(
)
et
number_format(
)
.