mirror of
https://github.com/macintoshplus/doc-fr.git
synced 2026-03-27 10:22:07 +01:00
git-svn-id: https://svn.php.net/repository/phpdoc/fr/trunk@232594 c90b9560-bf6c-de11-be94-00142212c4b1
354 lines
12 KiB
XML
354 lines
12 KiB
XML
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
<!-- $Revision: 1.27 $ -->
|
|
<!-- EN-Revision: 1.17 Maintainer: yannick Status: ready -->
|
|
<!-- Reviewed: yes -->
|
|
|
|
<refentry id="function.sprintf">
|
|
<refnamediv>
|
|
<refname>sprintf</refname>
|
|
<refpurpose>Retourne une chaîne formatée</refpurpose>
|
|
</refnamediv>
|
|
<refsect1>
|
|
&reftitle.description;
|
|
<methodsynopsis>
|
|
<type>string</type><methodname>sprintf</methodname>
|
|
<methodparam><type>string</type><parameter>format</parameter></methodparam>
|
|
<methodparam choice="opt"><type>mixed</type><parameter>args</parameter></methodparam>
|
|
<methodparam choice="opt"><type>mixed</type><parameter>...</parameter></methodparam>
|
|
</methodsynopsis>
|
|
<simpara>
|
|
<methodname>sprintf</methodname> retourne une chaîne formatée, avec
|
|
le format <parameter>format</parameter>, en utilisant les arguments
|
|
<parameter>args</parameter>.
|
|
</simpara>
|
|
<simpara>
|
|
La chaîne de format est composée de zéro, une ou plusieurs directives :
|
|
les caractères ordinaires (à l'exception de <literal>%</literal>)
|
|
qui sont copiés directement dans le résultat, et des
|
|
<emphasis>spécifications de conversion</emphasis>, qui exploitent
|
|
chacune un des arguments passés après la chaîne de format.
|
|
Ces formats s'appliquent à <function>sprintf</function>
|
|
et <function>printf</function>.
|
|
</simpara>
|
|
<para>
|
|
Chaque spécification de conversion est constituée d'un signe
|
|
de pourcentage (<literal>%</literal>), suivi d'un ou plusieurs
|
|
des éléments suivants, dans cet ordre :
|
|
<orderedlist>
|
|
<listitem>
|
|
<simpara>
|
|
Un <emphasis>spécificateur d'espacement</emphasis> 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 &zero;
|
|
(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
|
|
(<literal>'</literal>). Voir les exemples ci-dessous.
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
Un <emphasis>remplisseur</emphasis> 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 &zero;. 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
|
|
(<literal>'</literal>) : voir les exemples ci-dessous.
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
Un <emphasis>spécificateur d'alignement</emphasis> qui indique
|
|
si le résultat doit être aligné à gauche ou à droite. Par
|
|
défaut, le résultat est aligné à gauche. Le caractère
|
|
<literal>-</literal> fera que le résultat sera aligné à droite.
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
Un nombre optionnel, <emphasis>spécificateur de taille</emphasis>
|
|
indique le nombre minimum de caractères que cette conversion doit
|
|
fournir en résultat.
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
Un <emphasis>spécificateur de précision</emphasis> 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.
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Un <emphasis>spécificateur de type</emphasis> qui indique le type
|
|
avec lequel l'argument sera traité. Plusieurs types possibles :
|
|
<simplelist>
|
|
<member>
|
|
<literal>%</literal> : un caractère de pourcentage littéral.
|
|
Aucun argument n'est nécessaire.
|
|
</member>
|
|
<member>
|
|
<literal>b</literal> : l'argument est traité comme un entier,
|
|
et présenté comme un nombre binaire.
|
|
</member>
|
|
<member>
|
|
<literal>c</literal> : l'argument est traité comme un entier,
|
|
et présenté comme le caractère de code ASCII correspondant.
|
|
</member>
|
|
<member>
|
|
<literal>d</literal> : l'argument est traité comme un entier,
|
|
et présenté comme un nombre décimal signé.
|
|
</member>
|
|
<member>
|
|
<literal>e</literal> : l'argument est traité comme une notation
|
|
scientifique (e.g. <literal>1.2e+2</literal>).
|
|
Le spécificateur de précision représente le nombre de chiffres après
|
|
la virgule depuis &php; 5.2.1. Dans les versions antérieures, il a été
|
|
pris comme nombre des chiffres significatifs (au moins un).
|
|
</member>
|
|
<member>
|
|
<literal>u</literal> : l'argument est traité comme un entier,
|
|
et présenté comme un nombre décimal non signé.
|
|
</member>
|
|
<member>
|
|
<literal>f</literal> : l'argument est traité comme un nombre à
|
|
virgule flottante (type <type>float</type>), et présenté comme un
|
|
nombre à virgule flottante (tenant compte de la locale utilisée).
|
|
</member>
|
|
<member>
|
|
<literal>F</literal> : l'argument est traité comme un nombre à
|
|
virgule flottante (type <type>float</type>), 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.
|
|
</member>
|
|
<member>
|
|
<literal>o</literal> : l'argument est traité comme un entier,
|
|
et présenté comme un nombre octal.
|
|
</member>
|
|
<member>
|
|
<literal>s</literal> : l'argument est traité et
|
|
présenté comme une chaîne de caractères.
|
|
</member>
|
|
<member>
|
|
<literal>x</literal> : l'argument est traité comme un entier,
|
|
et présenté comme un nombre hexadécimal (les lettres en minuscules).
|
|
</member>
|
|
<member>
|
|
<literal>X</literal> : l'argument est traité comme un entier,
|
|
et présenté comme un nombre hexadécimal (les lettres en majuscules).
|
|
</member>
|
|
</simplelist>
|
|
</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
</para>
|
|
<para>
|
|
Depuis &php; 4.0.6, la chaîne de format supporte le numérotage
|
|
et l'échange d'arguments. Par exemple :
|
|
<example>
|
|
<title>Echange d'arguments</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$format = 'Il y a %d singes dans le %s';
|
|
printf($format, $num, $location);
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
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 :
|
|
<example>
|
|
<title>Echange d'arguments (2)</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$format = 'Le %s a %d singes';
|
|
printf($format, $num, $location);
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
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 :
|
|
<example>
|
|
<title>Echange d'arguments (3)</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$format = 'Le %2\$s a %1\$d singes';
|
|
printf($format, $num, $location);
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
Un des avantages est que vous pouvez désormais exploiter plusieurs fois les
|
|
arguments sans les répéter. Ainsi :
|
|
<example>
|
|
<title>Echange d'arguments (4)</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$format = 'Le %2\$s a %1\$d singes.
|
|
C'est un beau %2\$s, avec %1\$d singes.';
|
|
printf($format, $num, $location);
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<simpara>
|
|
Voir aussi
|
|
<function>printf</function>,
|
|
<function>sscanf</function>,
|
|
<function>fscanf</function>,
|
|
<function>vsprintf</function> et
|
|
<function>number_format</function>.
|
|
</simpara>
|
|
</refsect1>
|
|
<refsect1>
|
|
&reftitle.examples;
|
|
<example>
|
|
<title><function>sprintf</function> : exemples divers</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?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
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
&example.outputs;
|
|
<screen>
|
|
<![CDATA[
|
|
%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'
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
<example>
|
|
<title><function>sprintf</function> : spécificateurs chaînes de caractères</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?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
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
&example.outputs;
|
|
<screen>
|
|
<![CDATA[
|
|
[monkey]
|
|
[ monkey]
|
|
[monkey ]
|
|
[0000monkey]
|
|
[####monkey]
|
|
[many monke]
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
<example>
|
|
<title><function>sprintf</function> : entier sans espace</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$isodate = sprintf("%04d-%02d-%02d", $year, $month, $day);
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
<example>
|
|
<title><function>sprintf</function> : formatage de devises</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?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"
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
<example>
|
|
<title><function>sprintf</function> : notation scientifique</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$number = 362525200;
|
|
|
|
echo sprintf("%.3e", $number); // affiche 3.625e+8
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</refsect1>
|
|
</refentry>
|
|
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
indent-tabs-mode:nil
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"../../../../manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
vim: et tw=78 syn=sgml
|
|
vi: ts=1 sw=1
|
|
--> |