soundex
<<<
sprintf sscanf
>>>

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
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.51 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 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 spécifications de conversion , qui exploitent 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 constituée d'un signe de pourcentage ( % ), suivi d'un ou plusieurs des éléments suivants, dans cet ordre :

  1. Un optionnel spécificateur d'espacement 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 des espaces. Un caractère d'espacement altérnatif peut être spécifié en le préfixant avec un simple guillemet ( ' ). Voir les examples 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 est 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 coupûre, définissant une limite maximal 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 (local avertie).
    • F - l'argument est traité comme un nombre à virgule flottante (type float ), et présenté comme un nombre à virgule flottante (non-local averti). 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);
?>
Cet exemple peut afficher par exemple : "Il y a 5 singes dans le bananier". Mais imaginez que la chaîne de format soit créée dans un script séparé (une bibliothèque), ca nous devons internationaliser cet affichage. Nous aurons peut être à écrire :
Echange d'arguments (2)

<?php
$format
= "Le %s a %d singes";
printf($format, $num, $location);
?>
Maintenant, nous avons 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 formatage l'ordre dans lequel les arguments doivent être repris. La chaîne de format peut être réécrite ainsi :
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 :
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 , vsprintf et number_format .

printf : 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 hexadecimal (minuscule)
printf("%%X = '%X'\n", $n); // représentation hexadecimal (majuscule)

printf("%%+d = '%+d'\n", $n); // sign specifier on a positive integer
printf("%%+d = '%+d'\n", $u); // sign specifier on a negative integer
?>
printf : 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 : formattage 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); // affichera 3.63e+8
?>

<< sprintf >>
soundex Chaînes de caractères (Strings) sscanf