SommaireTelecharger la documentationChapitre suivantChapitre precedent  

  .: News :.: Edito :.: Scripts :.: Forum :.: Erreurs :.: Jobs :. 
 
Sommaire

Chaîne de caractères

AddCSlashes
AddSlashes
bin2hex
chop
chr
chunk_split
convert_cyr_string
count_chars
crc32
crypt
echo
explode
get_html_translation_table
get_meta_tags
hebrev
hebrevc
htmlentities
htmlspecialchars
implode
join
levenshtein
localeconv
ltrim
md5
metaphone
nl2br
ord
parse_str
print
printf
quoted_printable_decode
QuoteMeta
rtrim
sscanf
setlocale
similar_text
soundex
sprintf
strncasecmp
strcasecmp
strchr
strcmp
strcoll
strcspn
strip_tags
StripCSlashes
StripSlashes
stristr
strlen
strnatcmp
strnatcasecmp
strncmp
str_pad
strpos
strrchr
str_repeat
strrev
strrpos
strspn
strstr
strtok
strtolower
strtoupper
str_replace
strtr
substr
substr_count
substr_replace
trim
ucfirst
ucwords
wordwrap

6.95.38 sprintf

[ Exemples avec sprintf ]   PHP 3, PHP 4 >= 4.0.0

Description

string sprintf(string format ,[mixed args ])

sprintf retourne une chaîne formatée avec le format format.

La chaîne de format est composée de 0 ou plus directives : généralement des caractères qui sont recopiés tels quels (hormis %), et des spécifications, chacune d'elle disposant de son propre paramètre. Cela s'applique à sprintf et printf.

Chaque conversion consiste en un signe pourcentage (%), suivi d'un ou plusieurs éléments parmi ceux-ci :

  • Une option de remplissage, qui indique quel caractère sera utilisé pour le remplissage, et la taille finale de la chaîne. Le caractère de remplissage peut être un espace ou le caractère zéro (0).). La valeur par défaut est l'espace. Une autre valeur peut être spécifiée en la préfixant par un guillemet simple ('). Voir les exemples plus loin.

  • Un argument optionnel alignment spécifier  qui indique que le résultat doit être justifié à droite ou à gauche. Par défaut, il est justifié à gauche. Le caractère - signifie : justification à droite.

  • Argument optionnel, width spécifier  indique le nombre minimum de caractères que la conversion devrait retourner.

  • Argument optionnel, precision spécifier  indique le nombre de chiffres utilisé pour afficher un nombre à virgule flottante. Cette option n'a d'effet que sur les nombres à virgule de type double (Une autre fonction pratique pour formater les nombres est : number_format).

  • type specifier  indique le type de données passées en argument. Les types possibles sont :

    • %
    • b
    • c
    • d
    • u
    • f
    • o
    • s
    • x
    • X

A partir de PHP 4.0.6, le paramètre format supportera aussi la numérotation des arguments, et leur échange. Par exemple :
Echange d'arguments : cas habituel

<?php
$format 
"Il y a %d singes dans le %s";
printf($format,$num,$location);
?>
Cela pourra afficher "Il y a 5 singes dans le baobab". Mais imaginons un instant que nous créons cette chaîne à partir d'un fichier séparé, car nous voulons internationaliser le message. On voudra notamment écrire librement :
Echange d'arguments : cas problématique

<?php
$format 
"Le %s contient %d singes";
printf($format,$num,$location);
?>
Maintenant, on a un problème. L'ordre d'utilisation des variables dans la chaîne de formatage n'est pas celui d'appel de la fonction sprintf. L'idéal serait de pouvoir garder l'ordre des arguments, quel que soit l'ordre des variables fournies. Il faudrait donc indiquer dans la chaîne de formatage dans quel ordre utiliser les valeurs. On pourrait écrire ceci à la place:
Echange d'arguments : solution

<?php
$format 
"Le %2\$s contient %1\$d singes";
printf($format,$num,$location);
?>
Et vous pouvez désormais répéter les variables sans ajouter de nouvel argument. Par exemple :
Echange d'arguments : répétition

<?php
$format 
"Le %2\$s contient %1\$d singes.  C'est un beau %2\$s, avec %1\$d signes dessus.";
printf($format,$num,$location);
?>

Voir aussi printf, sscanf, fscanf et number_format.

Exemple avec sprintf: complété avec des zéros

<?php
$isodate 
sprintf("%04d-%02d-%02d"$year$month$day);
?>
Exemple avec sprintf: format monétaire

<?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"
?>


Chapitre précédentChapitre suivantAccueil nexen.net