sprintf
-- Retourne une chaîne formatée
string sprintf
( string format [, mixed args [, mixed
...]] )
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 :
1. Un spécificateur d'espacement
optionnel qui dit quel spécificateur
doit être utilisé pour
espacer les résultats à
la bonne taille de la chaîne.
Cela peut être un caractère
espace ou 0 (caractère zéro).
Par défaut, l'espacement est
effectué avec le caractère
espace. Un caractère d'espacement
alternatif peut être spécifié
en le préfixant avec un guillemet
simple ('). Voir les exemples ci-dessous.
2. 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.
3. 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 sera
aligné à droite.
4.Un nombre optionnel, spécificateur
de taille indique le nombre minimum
de caractères que cette conversion
doit fournir en résultat.
5. Un spécificateur de précision
qui indique le nombre de décimales
qui doivent être affichées
pour les nombres à virgule
flottante. Lorsque vous utilisez ce
spécificateur dans une chaîne,
il agit comme un point de coupure,
définissant une limite maximale
de caractères de la chaîne.
6. 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).
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 1. Echange 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. Echange 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. Echange 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. Echange d'arguments
(4)
<?php
$format = 'Le %2\$s a %1\$d singes.
C'est un beau %2 Warning: Unexpected
character in input: '\' (ASCII=92)
state=1 in /home/derick/phpdoc-all/scripts/html_syntax.php
on line 38 $s, avec %1 Warning: Unexpected
character in input: '\' (ASCII=92)
state=1 in /home/derick/phpdoc-all/scripts/html_syntax.php
on line 38 $d singes.';
printf($format, $num, $location);
?>
Exemple 5. 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 6. 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 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.63e+8
?>
|