<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.filesystem.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'it',
  ),
  'this' => 
  array (
    0 => 'function.fgetcsv.php',
    1 => 'fgetcsv',
    2 => 'Prende una riga da un puntatore a file e l\'analizza in cerca di campi CSV',
  ),
  'up' => 
  array (
    0 => 'ref.filesystem.php',
    1 => 'Filesystem Funzioni',
  ),
  'prev' => 
  array (
    0 => 'function.fgetc.php',
    1 => 'fgetc',
  ),
  'next' => 
  array (
    0 => 'function.fgets.php',
    1 => 'fgets',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'it',
    'path' => 'reference/filesystem/functions/fgetcsv.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.fgetcsv" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">fgetcsv</h1>
  <p class="verinfo">(PHP 4, PHP 5, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">fgetcsv</span> &mdash; <span class="dc-title">Prende una riga da un puntatore a file e l&#039;analizza in cerca di campi CSV</span></p>

 </div>
 
 <div class="refsect1 description" id="refsect1-function.fgetcsv-description">
  <h3 class="title">Descrizione</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>fgetcsv</strong></span>(<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span> <code class="parameter">$stream</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><span class="type"><a href="language.types.null.php" class="type null">?</a></span><span class="type"><a href="language.types.integer.php" class="type int">int</a></span></span> <code class="parameter">$length</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong></span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$separator</code><span class="initializer"> = &quot;,&quot;</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$enclosure</code><span class="initializer"> = &quot;\&quot;&quot;</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$escape</code><span class="initializer"> = &quot;\\&quot;</span></span><br>): <span class="type"><span class="type"><a href="language.types.array.php" class="type array">array</a></span>|<span class="type"><a href="language.types.singleton.php" class="type false">false</a></span></span></div>

  <p class="para rdfs-comment">
   Simile a <span class="function"><a href="function.fgets.php" class="function">fgets()</a></span> eccetto per il fatto che
   <span class="function"><strong>fgetcsv()</strong></span> analizza le riga letta alla ricerca di campi
   in formato <abbr title="Comma Separated Value">CSV</abbr> e restituisce un array contenente i campi
   letti.
  </p>
  <blockquote class="note"><p><strong class="note">Nota</strong>: 
   <span class="simpara">
    Le impostazioni locali vengono prese in considerazione da questa funzione.
    Ad esempio, i dati codificati in determinati formati a byte singolo potrebbero essere analizzati
    in modo errato se <strong><code><a href="string.constants.php#constant.lc-ctype">LC_CTYPE</a></code></strong> è impostato su
    <code class="literal">en_US.UTF-8</code>.
   </span>
  </p></blockquote>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.fgetcsv-parameters">
  <h3 class="title">Elenco dei parametri</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">stream</code></dt>
     <dd>
      <p class="para">
       Un puntatore valido a un file che punta a un file aperto con successo da
       <span class="function"><a href="function.fopen.php" class="function">fopen()</a></span>, <span class="function"><a href="function.popen.php" class="function">popen()</a></span> o
       <span class="function"><a href="function.fsockopen.php" class="function">fsockopen()</a></span>.
      </p>
     </dd>
    
    
     <dt><code class="parameter">length</code></dt>
     <dd>
      <p class="para">
       Deve essere più grande della riga più lunga (in caratteri) per essere trovato nel
       file CSV (tenendo conto dei caratteri di fine riga). Altrimenti, la riga
       viene suddivisa in blocchi di <code class="parameter">length</code> caratteri,
       a meno che la divisione non avvenga all&#039;interno di una chiusura.
      </p>
      <p class="para">
       Se si omette questo parametro (o lo si imposta su 0,
       o <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> in PHP 8.0.0 o versioni successive), la lunghezza massima della riga non è limitata,
       ma è leggermente più lenta.
      </p>
     </dd>
    
    
     <dt><code class="parameter">separator</code></dt>
     <dd>
      <p class="para">
       Il parametro <code class="parameter">separator</code> imposta il separatore di campo.
       Deve essere un carattere a byte singolo.
      </p>
     </dd>
    
    
     <dt><code class="parameter">enclosure</code></dt>
     <dd>
      <p class="para">
       Il parametro <code class="parameter">enclosure</code> imposta il carattere di chiusura del campo.
       Deve essere un carattere a byte singolo.
      </p>
     </dd>
    
    
     <dt><code class="parameter">escape</code></dt>
     <dd>
      <p class="para">
       Il parametro <code class="parameter">escape</code> imposta il carattere di escape.
       Deve essere un carattere a byte singolo o la stringa vuota.
       La stringa vuota (<code class="literal">&quot;&quot;</code>) disabilita il meccanismo di escape proprietario.
      </p>
      <div class="warning"><strong class="warning">Avviso</strong>
       <p class="simpara">
        Nel flusso di input, il carattere <code class="parameter">enclosure</code>
        può sempre essere sottoposto a escape raddoppiandolo all’interno di una stringa tra virgolette,
        producendo un singolo carattere <code class="parameter">enclosure</code>
        nel risultato analizzato.
        Il carattere <code class="parameter">escape</code> funziona in modo diverso:
        se una sequenza di caratteri <code class="parameter">escape</code> e
        <code class="parameter">enclosure</code> appare nell’input,
        entrambi i caratteri saranno presenti nel risultato analizzato.
        Quindi, per i parametri predefiniti, una riga CVS come
        <code class="literal">&quot;a&quot;&quot;b&quot;,&quot;c\&quot;d&quot;</code> avrà i campi analizzati come
        <code class="literal">a&quot;b</code> e <code class="literal">c\&quot;d</code>, rispettivamente.
       </p>
      </div>
      <div class="warning"><strong class="warning">Avviso</strong>
       <p class="simpara">
        A partire da PHP 8.4.0, dipendere dal valore predefinito di
        <code class="parameter">escape</code> è deprecato.
        Deve essere fornito esplicitamente, sia per posizione che mediante l&#039;uso
        dei <a href="functions.arguments.php#functions.named-arguments" class="link">named arguments</a>.
       </p>
      </div>
     </dd>
    
   </dl>
  </p>
  <div class="warning"><strong class="warning">Avviso</strong><p class="simpara">
 When <code class="parameter">escape</code> is set to anything other than an empty string
 (<code class="literal">&quot;&quot;</code>) it can result in CSV that is not compliant with
 <a href="https://datatracker.ietf.org/doc/html/rfc4180" class="link external">&raquo;&nbsp;RFC 4180</a> or unable to survive a roundtrip
 through the PHP CSV functions. The default for <code class="parameter">escape</code> is
 <code class="literal">&quot;\\&quot;</code> so it is recommended to set it to the empty string explicitly.
 The default value will change in a future version of PHP, no earlier than PHP 9.0.
</p></div>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.fgetcsv-returnvalues">
  <h3 class="title">Valori restituiti</h3>
  <p class="para">
   Restituisce un array indicizzato contenente i campi letti in caso di successo,  o <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> in caso di fallimento.
  </p>
  <blockquote class="note"><p><strong class="note">Nota</strong>: 
   <p class="para">
    Una riga vuota in un file CSV verrà restituita come un array
    contenente un singolo campo <span class="type"><a href="language.types.null.php" class="type null">null</a></span> e non sarà trattata
    come un errore.
   </p>
  </p></blockquote>
  <blockquote class="note"><p><strong class="note">Nota</strong>: <span class="simpara">Se PHP non riconosce
correttamente i fine riga durante la lettura di file creati o provenienti
da un computer Macintosh, l&#039;abilitazione dell&#039;opzione di configurazione runtime
<a href="filesystem.configuration.php#ini.auto-detect-line-endings" class="link">auto_detect_line_endings</a>
potrebbe aiutare a risolvere il problema.</span></p></blockquote>
 </div>


 <div class="refsect1 errors" id="refsect1-function.fgetcsv-errors">
  <h3 class="title">Errori/Eccezioni</h3>
  <p class="simpara">
   Genera un <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> se
   <code class="parameter">separator</code> o <code class="parameter">enclosure</code>
   non sono lunghi un byte.
  </p>
  <p class="simpara">
   Genera un <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> se
   <code class="parameter">escape</code> non è lungo un byte o è una stringa vuota.
  </p>
 </div>


 <div class="refsect1 changelog" id="refsect1-function.fgetcsv-changelog">
  <h3 class="title">Log delle modifiche</h3>
  <p class="para">
   <table class="doctable informaltable">
    
     <thead>
      <tr>
       <th>Versione</th>
       <th>Descrizione</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>8.4.0</td>
       <td>
        L&#039;affidamento sul valore predefinito di <code class="parameter">escape</code> è ora
        deprecato.
       </td>
      </tr>

      <tr>
       <td>8.3.0</td>
       <td>
        Viene restituita una stringa vuota invece di una stringa con un singolo
        byte null per l&#039;ultimo campo se contiene solo una chiusura
        non terminata.
       </td>
      </tr>

      <tr>
       <td>8.0.0</td>
       <td>
        <code class="parameter">length</code> è ora nullable.
       </td>
      </tr>

      <tr>
       <td>7.4.0</td>
       <td>
        Il parametro <code class="parameter">escape</code> ora accetta anche una stringa
        vuota per disabilitare il meccanismo di escape proprietario.
       </td>
      </tr>

     </tbody>
    
   </table>

  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-function.fgetcsv-examples">
  <h3 class="title">Esempi</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Example #1 Legge e stampa il contenuto di un file CSV</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$row </span><span style="color: #007700">= </span><span style="color: #0000BB">1</span><span style="color: #007700">;<br />if ((</span><span style="color: #0000BB">$handle </span><span style="color: #007700">= </span><span style="color: #0000BB">fopen</span><span style="color: #007700">(</span><span style="color: #DD0000">"test.csv"</span><span style="color: #007700">, </span><span style="color: #DD0000">"r"</span><span style="color: #007700">)) !== </span><span style="color: #0000BB">FALSE</span><span style="color: #007700">) {<br />    while ((</span><span style="color: #0000BB">$data </span><span style="color: #007700">= </span><span style="color: #0000BB">fgetcsv</span><span style="color: #007700">(</span><span style="color: #0000BB">$handle</span><span style="color: #007700">, </span><span style="color: #0000BB">1000</span><span style="color: #007700">, </span><span style="color: #DD0000">","</span><span style="color: #007700">)) !== </span><span style="color: #0000BB">FALSE</span><span style="color: #007700">) {<br />        </span><span style="color: #0000BB">$num </span><span style="color: #007700">= </span><span style="color: #0000BB">count</span><span style="color: #007700">(</span><span style="color: #0000BB">$data</span><span style="color: #007700">);<br />        echo </span><span style="color: #DD0000">"&lt;p&gt; </span><span style="color: #0000BB">$num</span><span style="color: #DD0000"> campi sulla riga </span><span style="color: #0000BB">$row</span><span style="color: #DD0000">: &lt;br /&gt;&lt;/p&gt;\n"</span><span style="color: #007700">;<br />        </span><span style="color: #0000BB">$row</span><span style="color: #007700">++;<br />        for (</span><span style="color: #0000BB">$c</span><span style="color: #007700">=</span><span style="color: #0000BB">0</span><span style="color: #007700">; </span><span style="color: #0000BB">$c </span><span style="color: #007700">&lt; </span><span style="color: #0000BB">$num</span><span style="color: #007700">; </span><span style="color: #0000BB">$c</span><span style="color: #007700">++) {<br />            echo </span><span style="color: #0000BB">$data</span><span style="color: #007700">[</span><span style="color: #0000BB">$c</span><span style="color: #007700">] . </span><span style="color: #DD0000">"&lt;br /&gt;\n"</span><span style="color: #007700">;<br />        }<br />    }<br />    </span><span style="color: #0000BB">fclose</span><span style="color: #007700">(</span><span style="color: #0000BB">$handle</span><span style="color: #007700">);<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>
 </div>


 <div class="refsect1 seealso" id="refsect1-function.fgetcsv-seealso">
  <h3 class="title">Vedere anche:</h3>
  <ul class="simplelist">
   <li><span class="function"><a href="function.fputcsv.php" class="function" rel="rdfs-seeAlso">fputcsv()</a> - Format line as CSV and write to file pointer</span></li>
   <li><span class="function"><a href="function.str-getcsv.php" class="function" rel="rdfs-seeAlso">str_getcsv()</a> - Parse a CSV string into an array</span></li>
   <li><span class="methodname"><a href="splfileobject.fgetcsv.php" class="methodname" rel="rdfs-seeAlso">SplFileObject::fgetcsv()</a> - Gets line from file and parse as CSV fields</span></li>
   <li><span class="methodname"><a href="splfileobject.fputcsv.php" class="methodname" rel="rdfs-seeAlso">SplFileObject::fputcsv()</a> - Write a field array as a CSV line</span></li>
   <li><span class="methodname"><a href="splfileobject.setcsvcontrol.php" class="methodname" rel="rdfs-seeAlso">SplFileObject::setCsvControl()</a> - Set the delimiter, enclosure and escape character for CSV</span></li>
   <li><span class="methodname"><a href="splfileobject.getcsvcontrol.php" class="methodname" rel="rdfs-seeAlso">SplFileObject::getCsvControl()</a> - Get the delimiter, enclosure and escape character for CSV</span></li>
   <li><span class="function"><a href="function.explode.php" class="function" rel="rdfs-seeAlso">explode()</a> - Suddivide una stringa</span></li>
   <li><span class="function"><a href="function.file.php" class="function" rel="rdfs-seeAlso">file()</a> - Legge l'intero file in un array</span></li>
   <li><span class="function"><a href="function.pack.php" class="function" rel="rdfs-seeAlso">pack()</a> - Pack data into binary string</span></li>
  </ul>
 </div>


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