1
0
mirror of https://github.com/php/doc-it.git synced 2026-03-24 23:52:12 +01:00
Files
Marco Cucinato 9b05a8ed00 accent errors: perchè -> perché
git-svn-id: https://svn.php.net/repository/phpdoc/it/trunk@327390 c90b9560-bf6c-de11-be94-00142212c4b1
2012-08-30 22:23:42 +00:00

345 lines
12 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: n/a Maintainer: darvina Status: ready -->
<!-- splitted from ./en/functions/strings.xml, last change in rev 1.2 -->
<refentry xml:id="function.sprintf" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>sprintf</refname>
<refpurpose>Restituisce una stringa formattata</refpurpose>
</refnamediv>
<refsect1>
<title>Descrizione</title>
<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>
La funzione restituisce una stringa formattata in base al parametro
<parameter>format</parameter>.
</simpara>
<simpara>
La stringa di formato è composta da 0 o più direttive:
i caratteri ordinari (escluso il <literal>%</literal>) sono
copiati direttamente nel risultato, mentre le <emphasis>specifiche
di conversione</emphasis>, scaricano il proprio parametro.
Queste note si applicano alle funzioni <function>fprintf</function>,
<function>sprintf</function> e <function>printf</function>.
</simpara>
<para>
Ciascun parametro di conversione consiste nel segno percento
(<literal>%</literal>), seguito da uno più dei seguenti elementi
nell'ordine si ha:
<orderedlist>
<listitem>
<simpara>
Un parametro opzionale di <emphasis>specifica del segno</emphasis> che forza la presenza del segno
(- oppure +) in caso di numero. Per default, si usa soltanto il segno -
se il numero è negativo. Questo parametro forza i numeri positiva ad avere
il segno +, ed è stato aggiunto in PHP 4.3.0.
</simpara>
</listitem>
<listitem>
<simpara>
Un parametro opzionale per la specifica del <emphasis>riempimento</emphasis>
che indica quale carattere sarà utilizzato per completare la stringa risultante
in modo da raggiungere la dimensione richiesta. Questo può essere uno spazio oppure uno
<literal>0</literal> (il carattere zero). Per default si completa con
spazi. Un carattere di riempimento alternativo può essere indicato
anteponendo a questo l'apice singolo (<literal>'</literal>).
Vedere gli esempi seguenti.
</simpara>
</listitem>
<listitem>
<simpara>
Un parametro opzionale per la specifica dell'<emphasis>allineamento</emphasis>
che indica se la stringa risultante debba essere giustificata a destra o a sinistra.
Per default le stringhe sono giustificate a destra; il carattere
<literal>-</literal> forza la giustificazione a sinistra.
</simpara>
</listitem>
<listitem>
<simpara>
Un parametro numerico opzionale per la specifica della <emphasis>dimensione</emphasis>
che indica di quanti caratteri (come minimo) debba essere lunga la
stringa.
</simpara>
</listitem>
<listitem>
<simpara>
Un parametro opzionale per indicare la <emphasis>precisione</emphasis> per indicare
quante cifre decimali debbano essere visualizzate per i numeri in virgola mobile.
Quando si usa questo parametro in una stringa si impone come una sorta di punto di
cutoff, esso imposta un limite alla lunghezza della stringa.
</simpara>
</listitem>
<listitem>
<para>
Una specifica di <emphasis>tipo</emphasis> che indica il tipo
di dati dell'argomento. I possibili tipi sono:
<simplelist>
<member>
<literal>%</literal> - il carattere percento. Nessun
argomento è richiesto.
</member>
<member>
<literal>b</literal> - l'argomento è trattato come un
intero e sarà presentato come numero binario.
</member>
<member>
<literal>c</literal> - l'argomento è trattato come un
intero e sarà presentato come carattere ASCII
del valore corrispondente.
</member>
<member>
<literal>d</literal> - l'argomento è trattato come un
intero e sarà presentato come un numero decimale con segno.
</member>
<member>
<literal>e</literal> - l'argomento è reso con notazione
scientifica (ad esempio 1.2e+2).
</member>
<member>
<literal>u</literal> - l'argomento è trattato come un
intero e sarà presentato come un numero decimale senza segno.
</member>
<member>
<literal>f</literal> - l'argomento è trattato come un
<type>float</type> e sarà presentato come un numero in virgola mobile (influenzato dalle impostazioni locali).
</member>
<member>
<literal>F</literal> - l'argomento è trattato come un numero
float, e sarà presentato come un numero in virgola mobile (non influenzato dalle impostazioni locali).
Disponibile da PHP 4.3.10 e PHP 5.0.3.
</member>
<member>
<literal>o</literal> - l'argomento è trattato come un
intero e sarà presentato come un numero ottale.
</member>
<member>
<literal>s</literal> - l'argomento sarà trattato e presentato
come una stringa.
</member>
<member>
<literal>x</literal> - l'argomento sarà trattato come un intero
e presentato in forma esadecimale (con le lettere in
minuscolo).
</member>
<member>
<literal>X</literal> - l'argomento è trattato come un
intero e sarà presentato come un numero esadecimale (con le
lettere maiuscole).
</member>
</simplelist>
</para>
</listitem>
</orderedlist>
</para>
<para>
A partire dal PHP 4.0.6 la stringa di formato supporta
lo scambio dei parametri. Eccone un esempio:
<example>
<title>Scambio dei parametri</title>
<programlisting role="php">
<![CDATA[
<?php
$format = "There are %d monkeys in the %s";
printf($format, $num, $location);
?>
]]>
</programlisting>
</example>
Questo esempio visualizza: "There are 5 monkeys in the tree". Ma
supponiamo di volere creare una stringa di formato in file a parte,
perché vogliamo rendere la procedura internazionale; e pertanto riscriviamo
l'esempio come:
<example>
<title>Scambio dei parametri</title>
<programlisting role="php">
<![CDATA[
<?php
$format = "The %s contains %d monkeys";
printf($format, $num, $location);
?>
]]>
</programlisting>
</example>
Ora abbiamo un problema. L'ordine dei segnaposto nella stringa di
formato non coincide con l'ordine dei parametri.
Si vorrebbe potere lasciare inalterato il codice e potere indicare
a quale parametro si riferisce il segnaposto.
Ciò può essere fatto modificando la stringa di formato come:
<example>
<title>Scambio dei parametri</title>
<programlisting role="php">
<![CDATA[
<?php
$format = "The %2\$s contains %1\$d monkeys";
printf($format, $num, $location);
?>
]]>
</programlisting>
</example>
Un beneficio aggiuntivo è che si possono ripetere i segnaposto
senza dovere ripetere i parametri. Ad esempio:
<example>
<title>Scambio di parametri</title>
<programlisting role="php">
<![CDATA[
<?php
$format = "The %2\$s contains %1\$d monkeys.
That's a nice %2\$s full of %1\$d monkeys.";
printf($format, $num, $location);
?>
]]>
</programlisting>
</example>
</para>
<simpara>
Vedere anche <function>printf</function>,
<function>sscanf</function>, <function>fscanf</function>,
<function>vsprintf</function> e
<function>number_format</function>.
</simpara>
</refsect1>
<refsect1>
<title>Esempi</title>
<example>
<title>Esempi di uso di <function>printf</function></title>
<programlisting role="php">
<![CDATA[
<?php
$n = 43951789;
$u = -43951789;
$c = 65; // ASCII 65 is 'A'
// attenzione che i doppi %%, visualizzano il carattere '%'
printf("%%b = '%b'\n", $n); // rappresentazione binaria
printf("%%c = '%c'\n", $c); // visualizza un carattere ASCII, coma la funzione chr()
printf("%%d = '%d'\n", $n); // rappresentazione di un intero standard
printf("%%e = '%e'\n", $n); // notazione scientifica
printf("%%u = '%u'\n", $n); // rappresentazione di un intero positivo privo di segno
printf("%%u = '%u'\n", $u); // rappresentazione di un intero negativo privo di segno
printf("%%f = '%f'\n", $n); // rappresentazine in virgola mobile
printf("%%o = '%o'\n", $n); // rappresentazione ottale
printf("%%s = '%s'\n", $n); // stringa
printf("%%x = '%x'\n", $n); // rappresentazione esadecimale (minuscolo)
printf("%%X = '%X'\n", $n); // rappresentazione esadecimale (maiuscolo)
printf("%%+d = '%+d'\n", $n); // indicazione del segno su un intero positivo
printf("%%+d = '%+d'\n", $u); // indicazione del segno su un intero negativo
?>
]]>
</programlisting>
<para>
L'output di questo programma sarà:
</para>
<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>printf</function>: specifiche di stringa</title>
<programlisting role="php">
<![CDATA[
<?php
$s = 'monkey';
$t = 'many monkeys';
printf("[%s]\n", $s); // output standard di stringa
printf("[%10s]\n", $s); // accostamento a destra con spazi
printf("[%-10s]\n", $s); // accostamento a sinistra con spazi
printf("[%010s]\n", $s); // completamento con zero funziona anche con le stringhe
printf("[%'#10s]\n", $s); // utilizza il carattere di riempimento '#'
printf("[%10.10s]\n", $t); // accostamento a sinistra con taglio a 10 caratteri
?>
]]>
</programlisting>
<para>
L'output di questo programma sarà:
</para>
<screen>
<![CDATA[
[monkey]
[ monkey]
[monkey ]
[0000monkey]
[####monkey]
[many monke]
]]>
</screen>
</example>
<example>
<title><function>sprintf</function>: interi completati con zeri</title>
<programlisting role="php">
<![CDATA[
<?php
$isodate = sprintf("%04d-%02d-%02d", $year, $month, $day);
?>
]]>
</programlisting>
</example>
<example>
<title><function>sprintf</function>: formattazione della moneta</title>
<programlisting role="php">
<![CDATA[
<?php
$money1 = 68.75;
$money2 = 54.35;
$money = $money1 + $money2;
// echo $money visualizzerà "123.1";
$formatted = sprintf("%01.2f", $money);
// echo $formatted visualizzerà "123.10"
?>
]]>
</programlisting>
</example>
<example>
<title><function>sprintf</function>: notazione scientifica</title>
<programlisting role="php">
<![CDATA[
<?php
$number = 362525200;
echo sprintf("%.3e", $number); // visualizza 3.63e+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:"~/.phpdoc/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
-->