<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.strings.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'it',
  ),
  'this' => 
  array (
    0 => 'function.sprintf.php',
    1 => 'sprintf',
    2 => 'Restituisce una stringa formattata',
  ),
  'up' => 
  array (
    0 => 'ref.strings.php',
    1 => 'String Funzioni',
  ),
  'prev' => 
  array (
    0 => 'function.soundex.php',
    1 => 'soundex',
  ),
  'next' => 
  array (
    0 => 'function.sscanf.php',
    1 => 'sscanf',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'it',
    'path' => 'reference/strings/functions/sprintf.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.sprintf" class="refentry">
   <div class="refnamediv">
    <h1 class="refname">sprintf</h1>
    <p class="verinfo">(PHP 4, PHP 5, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">sprintf</span> &mdash; <span class="dc-title">Restituisce una stringa formattata</span></p>

   </div>
   <div class="refsect1 unknown-1351" id="refsect1-function.sprintf-unknown-1351">
    <h3 class="title">Descrizione</h3>
     <div class="methodsynopsis dc-description">
      <span class="methodname"><strong>sprintf</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$format</code></span>, <span class="methodparam"><span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span> <code class="parameter">$args</code><span class="initializer"> = ?</span></span>, <span class="methodparam"><span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span> <code class="parameter">$...</code><span class="initializer"> = ?</span></span>): <span class="type"><a href="language.types.string.php" class="type string">string</a></span></div>

    <p class="simpara">
     La funzione restituisce una stringa formattata in base al parametro 
     <code class="parameter">format</code>.
    </p>
    <p class="simpara">
     La stringa di formato è composta da 0 o più direttive:
     i caratteri ordinari (escluso il <code class="literal">%</code>) sono
     copiati direttamente nel risultato, mentre le <em>specifiche 
     di conversione</em>, scaricano il proprio parametro.
     Queste note si applicano alle funzioni <span class="function"><a href="function.fprintf.php" class="function">fprintf()</a></span>,
     <span class="function"><strong>sprintf()</strong></span> e <span class="function"><a href="function.printf.php" class="function">printf()</a></span>.     
    </p>
    <p class="para">
     Ciascun parametro di conversione consiste nel segno percento
     (<code class="literal">%</code>), seguito da uno più dei seguenti elementi
     nell&#039;ordine si ha:
     <ol type="1">
      <li class="listitem">
       <span class="simpara">
        Un parametro opzionale di <em>specifica del segno</em> 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.
       </span>
      </li>
      <li class="listitem">
       <span class="simpara">
        Un parametro opzionale per la specifica del <em>riempimento</em>
        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
        <code class="literal">0</code> (il carattere zero).  Per default si completa con
        spazi. Un carattere di riempimento alternativo può essere indicato 
        anteponendo a questo l&#039;apice singolo (<code class="literal">&#039;</code>).
        Vedere gli esempi seguenti.
       </span>
      </li>
      <li class="listitem">
       <span class="simpara">
        Un parametro opzionale per la specifica dell&#039;<em>allineamento</em> 
        che indica se la stringa risultante debba essere giustificata a destra o a sinistra.
        Per default le stringhe sono giustificate a destra; il carattere
        <code class="literal">-</code> forza la giustificazione a sinistra.
       </span>
      </li>
      <li class="listitem">
       <span class="simpara">
        Un parametro numerico opzionale per la specifica della <em>dimensione</em>
        che indica di quanti caratteri (come minimo) debba essere lunga la
        stringa.
       </span>
      </li>
      <li class="listitem">
       <span class="simpara">
        Un parametro opzionale per indicare la <em>precisione</em> 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.
       </span>
      </li>
      <li class="listitem">
       <p class="para">
       Una specifica di <em>tipo</em> che indica il tipo 
        di dati dell&#039;argomento. I possibili tipi sono:
        <ul class="simplelist">
         <li>
          <code class="literal">%</code> - il carattere percento. Nessun
          argomento è richiesto.
         </li>
         <li>
          <code class="literal">b</code> - l'argomento è trattato come un 
          intero e sarà presentato come numero binario.
         </li>
         <li>
          <code class="literal">c</code> - l'argomento è trattato come un 
          intero e sarà presentato come carattere ASCII
          del valore corrispondente.
         </li>
         <li>
          <code class="literal">d</code> - l'argomento è trattato come un 
          intero e sarà presentato come un numero decimale con segno.
         </li>
         <li>
          <code class="literal">e</code> - l'argomento è reso con notazione
          scientifica (ad esempio 1.2e+2).
         </li>
         <li>
          <code class="literal">u</code> - l'argomento è trattato come un 
          intero e sarà presentato come un numero decimale senza segno.
         </li>
         <li>
          <code class="literal">f</code> - l'argomento è trattato come un 
          <span class="type"><a href="language.types.float.php" class="type float">float</a></span> e sarà presentato come un numero in virgola mobile (influenzato dalle impostazioni locali).
         </li>
         <li>
          <code class="literal">F</code> - 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.
         </li>
         <li>
          <code class="literal">o</code> - l'argomento è trattato come un 
          intero e sarà presentato come un numero ottale.
         </li>
         <li>
          <code class="literal">s</code> - l'argomento sarà trattato e presentato
          come una stringa.
         </li>
         <li>
          <code class="literal">x</code> - l'argomento sarà trattato come un intero
          e presentato in forma esadecimale (con le lettere in
          minuscolo).
         </li>
         <li>
          <code class="literal">X</code> - l'argomento è trattato come un 
          intero e sarà presentato come un numero esadecimale (con le 
          lettere maiuscole).
         </li>
        </ul>
       </p>
      </li>
     </ol>
    </p>
    <p class="para">
     A partire dal PHP 4.0.6 la stringa di formato supporta 
     lo scambio dei parametri. Eccone un esempio:
     <div class="example" id="example-1">
      <p><strong>Example #1 Scambio dei parametri</strong></p>
      <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$format </span><span style="color: #007700">= </span><span style="color: #DD0000">"There are %d monkeys in the %s"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #0000BB">$format</span><span style="color: #007700">, </span><span style="color: #0000BB">$num</span><span style="color: #007700">, </span><span style="color: #0000BB">$location</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
      </div>

     </div>
     Questo esempio visualizza: &quot;There are 5 monkeys in the tree&quot;.  Ma
     supponiamo di volere creare una stringa di formato in file a parte,
     perché vogliamo rendere la procedura internazionale; e pertanto riscriviamo 
     l&#039;esempio come:
     <div class="example" id="example-2">
      <p><strong>Example #2 Scambio dei parametri</strong></p>
      <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$format </span><span style="color: #007700">= </span><span style="color: #DD0000">"The %s contains %d monkeys"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #0000BB">$format</span><span style="color: #007700">, </span><span style="color: #0000BB">$num</span><span style="color: #007700">, </span><span style="color: #0000BB">$location</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
      </div>

     </div>
     Ora abbiamo un problema. L&#039;ordine dei segnaposto nella stringa di
     formato non coincide con l&#039;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:
     <div class="example" id="example-3">
      <p><strong>Example #3 Scambio dei parametri</strong></p>
      <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$format </span><span style="color: #007700">= </span><span style="color: #DD0000">"The %2\$s contains %1\$d monkeys"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #0000BB">$format</span><span style="color: #007700">, </span><span style="color: #0000BB">$num</span><span style="color: #007700">, </span><span style="color: #0000BB">$location</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
      </div>

     </div>
     Un beneficio aggiuntivo è che si possono ripetere i segnaposto
     senza dovere ripetere i parametri. Ad esempio:
     <div class="example" id="example-4">
      <p><strong>Example #4 Scambio di parametri</strong></p>
      <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$format </span><span style="color: #007700">= </span><span style="color: #DD0000">"The %2\$s contains %1\$d monkeys.<br />           That's a nice %2\$s full of %1\$d monkeys."</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #0000BB">$format</span><span style="color: #007700">, </span><span style="color: #0000BB">$num</span><span style="color: #007700">, </span><span style="color: #0000BB">$location</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
      </div>

     </div>
    </p>
    <p class="simpara">
     Vedere anche <span class="function"><a href="function.printf.php" class="function">printf()</a></span>,
     <span class="function"><a href="function.sscanf.php" class="function">sscanf()</a></span>, <span class="function"><a href="function.fscanf.php" class="function">fscanf()</a></span>, 
     <span class="function"><a href="function.vsprintf.php" class="function">vsprintf()</a></span> e
     <span class="function"><a href="function.number-format.php" class="function">number_format()</a></span>.
    </p>
   </div>

   <div class="refsect1 unknown-1354" id="refsect1-function.sprintf-unknown-1354">
    <h3 class="title">Esempi</h3>
    <div class="example" id="example-5">
     <p><strong>Example #5 Esempi di uso di <span class="function"><a href="function.printf.php" class="function">printf()</a></span></strong></p>
     <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$n </span><span style="color: #007700">=  </span><span style="color: #0000BB">43951789</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$u </span><span style="color: #007700">= -</span><span style="color: #0000BB">43951789</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$c </span><span style="color: #007700">= </span><span style="color: #0000BB">65</span><span style="color: #007700">; </span><span style="color: #FF8000">// ASCII 65 is 'A'<br /><br />// attenzione che i doppi %%, visualizzano il carattere '%' <br /></span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #DD0000">"%%b = '%b'\n"</span><span style="color: #007700">, </span><span style="color: #0000BB">$n</span><span style="color: #007700">); </span><span style="color: #FF8000">// rappresentazione binaria<br /></span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #DD0000">"%%c = '%c'\n"</span><span style="color: #007700">, </span><span style="color: #0000BB">$c</span><span style="color: #007700">); </span><span style="color: #FF8000">// visualizza un carattere ASCII, coma la funzione chr()<br /></span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #DD0000">"%%d = '%d'\n"</span><span style="color: #007700">, </span><span style="color: #0000BB">$n</span><span style="color: #007700">); </span><span style="color: #FF8000">// rappresentazione di un intero standard<br /></span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #DD0000">"%%e = '%e'\n"</span><span style="color: #007700">, </span><span style="color: #0000BB">$n</span><span style="color: #007700">); </span><span style="color: #FF8000">// notazione scientifica<br /></span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #DD0000">"%%u = '%u'\n"</span><span style="color: #007700">, </span><span style="color: #0000BB">$n</span><span style="color: #007700">); </span><span style="color: #FF8000">// rappresentazione di un intero positivo privo di segno<br /></span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #DD0000">"%%u = '%u'\n"</span><span style="color: #007700">, </span><span style="color: #0000BB">$u</span><span style="color: #007700">); </span><span style="color: #FF8000">// rappresentazione di un intero negativo privo di segno<br /></span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #DD0000">"%%f = '%f'\n"</span><span style="color: #007700">, </span><span style="color: #0000BB">$n</span><span style="color: #007700">); </span><span style="color: #FF8000">// rappresentazine in virgola mobile<br /></span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #DD0000">"%%o = '%o'\n"</span><span style="color: #007700">, </span><span style="color: #0000BB">$n</span><span style="color: #007700">); </span><span style="color: #FF8000">// rappresentazione ottale<br /></span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #DD0000">"%%s = '%s'\n"</span><span style="color: #007700">, </span><span style="color: #0000BB">$n</span><span style="color: #007700">); </span><span style="color: #FF8000">// stringa<br /></span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #DD0000">"%%x = '%x'\n"</span><span style="color: #007700">, </span><span style="color: #0000BB">$n</span><span style="color: #007700">); </span><span style="color: #FF8000">// rappresentazione esadecimale (minuscolo)<br /></span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #DD0000">"%%X = '%X'\n"</span><span style="color: #007700">, </span><span style="color: #0000BB">$n</span><span style="color: #007700">); </span><span style="color: #FF8000">// rappresentazione esadecimale (maiuscolo)<br /></span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #DD0000">"%%+d = '%+d'\n"</span><span style="color: #007700">, </span><span style="color: #0000BB">$n</span><span style="color: #007700">); </span><span style="color: #FF8000">// indicazione del segno su un intero positivo<br /></span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #DD0000">"%%+d = '%+d'\n"</span><span style="color: #007700">, </span><span style="color: #0000BB">$u</span><span style="color: #007700">); </span><span style="color: #FF8000">// indicazione del segno su un intero negativo<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

     <div class="example-contents"><p>
      L&#039;output di questo programma sarà:
     </p></div>
     <div class="example-contents screen">
<div class="annotation-interactive cdata"><pre>
%b = &#039;10100111101010011010101101&#039;
%c = &#039;A&#039;
%d = &#039;43951789&#039;
%e = &#039;4.39518e+7&#039;
%u = &#039;43951789&#039;
%u = &#039;4251015507&#039;
%f = &#039;43951789.000000&#039;
%o = &#039;247523255&#039;
%s = &#039;43951789&#039;
%x = &#039;29ea6ad&#039;
%X = &#039;29EA6AD&#039;
%+d = &#039;+43951789&#039;
%+d = &#039;-43951789&#039;
</pre></div>
     </div>
    </div>
    <div class="example" id="example-6">
     <p><strong>Example #6 <span class="function"><a href="function.printf.php" class="function">printf()</a></span>: specifiche di stringa</strong></p>
     <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$s </span><span style="color: #007700">= </span><span style="color: #DD0000">'monkey'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$t </span><span style="color: #007700">= </span><span style="color: #DD0000">'many monkeys'</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #DD0000">"[%s]\n"</span><span style="color: #007700">,      </span><span style="color: #0000BB">$s</span><span style="color: #007700">); </span><span style="color: #FF8000">// output standard di stringa<br /></span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #DD0000">"[%10s]\n"</span><span style="color: #007700">,    </span><span style="color: #0000BB">$s</span><span style="color: #007700">); </span><span style="color: #FF8000">// accostamento a destra con spazi<br /></span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #DD0000">"[%-10s]\n"</span><span style="color: #007700">,   </span><span style="color: #0000BB">$s</span><span style="color: #007700">); </span><span style="color: #FF8000">// accostamento a sinistra con spazi<br /></span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #DD0000">"[%010s]\n"</span><span style="color: #007700">,   </span><span style="color: #0000BB">$s</span><span style="color: #007700">); </span><span style="color: #FF8000">// completamento con zero funziona anche con le stringhe<br /></span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #DD0000">"[%'#10s]\n"</span><span style="color: #007700">,  </span><span style="color: #0000BB">$s</span><span style="color: #007700">); </span><span style="color: #FF8000">// utilizza il carattere di riempimento  '#'<br /></span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #DD0000">"[%10.10s]\n"</span><span style="color: #007700">, </span><span style="color: #0000BB">$t</span><span style="color: #007700">); </span><span style="color: #FF8000">// accostamento a sinistra con taglio a 10 caratteri<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

     <div class="example-contents"><p>
      L&#039;output di questo programma sarà:
     </p></div>
     <div class="example-contents screen">
<div class="annotation-interactive cdata"><pre>
[monkey]
[    monkey]
[monkey    ]
[0000monkey]
[####monkey]
[many monke]
</pre></div>
     </div>
    </div>
    <div class="example" id="example-7">
     <p><strong>Example #7 <span class="function"><strong>sprintf()</strong></span>: interi completati con zeri</strong></p>
     <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$isodate </span><span style="color: #007700">= </span><span style="color: #0000BB">sprintf</span><span style="color: #007700">(</span><span style="color: #DD0000">"%04d-%02d-%02d"</span><span style="color: #007700">, </span><span style="color: #0000BB">$year</span><span style="color: #007700">, </span><span style="color: #0000BB">$month</span><span style="color: #007700">, </span><span style="color: #0000BB">$day</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
    <div class="example" id="example-8">
     <p><strong>Example #8 <span class="function"><strong>sprintf()</strong></span>: formattazione della moneta</strong></p>
     <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$money1 </span><span style="color: #007700">= </span><span style="color: #0000BB">68.75</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$money2 </span><span style="color: #007700">= </span><span style="color: #0000BB">54.35</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$money </span><span style="color: #007700">= </span><span style="color: #0000BB">$money1 </span><span style="color: #007700">+ </span><span style="color: #0000BB">$money2</span><span style="color: #007700">;<br /></span><span style="color: #FF8000">// echo $money visualizzerà "123.1";<br /></span><span style="color: #0000BB">$formatted </span><span style="color: #007700">= </span><span style="color: #0000BB">sprintf</span><span style="color: #007700">(</span><span style="color: #DD0000">"%01.2f"</span><span style="color: #007700">, </span><span style="color: #0000BB">$money</span><span style="color: #007700">);<br /></span><span style="color: #FF8000">// echo $formatted visualizzerà "123.10"<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
    <div class="example" id="example-9">
     <p><strong>Example #9 <span class="function"><strong>sprintf()</strong></span>: notazione scientifica</strong></p>
     <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$number </span><span style="color: #007700">= </span><span style="color: #0000BB">362525200</span><span style="color: #007700">;<br /><br />echo </span><span style="color: #0000BB">sprintf</span><span style="color: #007700">(</span><span style="color: #DD0000">"%.3e"</span><span style="color: #007700">, </span><span style="color: #0000BB">$number</span><span style="color: #007700">); </span><span style="color: #FF8000">// visualizza 3.63e+8<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </div>

  </div><?php manual_footer($setup); ?>