6.36 Chaînes de caractères (Strings)
6 Référence des fonctions
Manuel PHP
. Introduction . Pré-requis . Installation . Constantes pré-définies . Voir aussi . addcslashes . addslashes . bin2hex . chop . chr . chunk_split . convert_cyr_string . convert_uudecode . convert_uuencode . count_chars . crc32 . crypt . echo . explode . fprintf . get_html_translation_table . hebrev . hebrevc . html_entity_decode . htmlentities . htmlspecialchars_decode . htmlspecialchars . implode . join . levenshtein . localeconv . ltrim . md5_file . md5 . metaphone . money_format . nl_langinfo . nl2br . number_format . ord . parse_str . print . printf . quoted_printable_decode . quotemeta . rtrim . setlocale . sha1_file . sha1 . similar_text . soundex ->sprintf . sscanf . str_ireplace . str_pad . str_repeat . str_replace . str_rot13 . str_shuffle . str_split . str_word_count . strcasecmp . strchr . strcmp . strcoll . strcspn . strip_tags . stripcslashes . stripos . stripslashes . stristr . strlen . strnatcasecmp . strnatcmp . strncasecmp . strncmp . strpbrk . strpos . strrchr . strrev . strripos . strrpos . strspn . strstr . strtok . strtolower . strtoupper . strtr . substr_compare . substr_count . substr_replace . substr . trim . ucfirst . ucwords . vfprintf . vprintf . vsprintf . wordwrap
|
6.36.52 sprintf()Retourne une chaîne formatée[ Exemples avec sprintf ] PHP 3, PHP 4, PHP 5
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 :
-
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.
-
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 sera 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. 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.
-
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 :
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 :
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 :
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 :
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
.
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 ?>
|
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 ?>
|
sprintf : entier sans espace |
<?php $isodate = sprintf("%04d-%02d-%02d", $year, $month, $day); ?>
|
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" ?>
|
sprintf : notation scientifique |
<?php $number = 362525200;
echo sprintf("%.3e", $number); // affiche 3.63e+8 ?>
|
|