(PHP 4, PHP 5, PHP 7, PHP 8)
fgetcsv — Prende una riga da un puntatore a file e l'analizza in cerca di campi CSV
$stream
,$length
= null
,$separator
= ",",$enclosure
= "\"",$escape
= "\\"Simile a fgets() eccetto per il fatto che fgetcsv() analizza le riga letta alla ricerca di campi in formato CSV e restituisce un array contenente i campi letti.
Nota: 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
LC_CTYPE
è impostato suen_US.UTF-8
.
stream
Un puntatore valido a un file che punta a un file aperto con successo da fopen(), popen() o fsockopen().
length
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 length
caratteri,
a meno che la divisione non avvenga all'interno di una chiusura.
Se si omette questo parametro (o lo si imposta su 0,
o null
in PHP 8.0.0 o versioni successive), la lunghezza massima della riga non è limitata,
ma è leggermente più lenta.
separator
Il parametro separator
imposta il separatore di campo.
Deve essere un carattere a byte singolo.
enclosure
Il parametro enclosure
imposta il carattere di chiusura del campo.
Deve essere un carattere a byte singolo.
escape
Il parametro escape
imposta il carattere di escape.
Deve essere un carattere a byte singolo o la stringa vuota.
La stringa vuota (""
) disabilita il meccanismo di escape proprietario.
Nota: Di solito, per effettuare l'escape di un carattere
enclosure
all'interno di un campo lo si duplica; tuttavia, il carattereescape
può essere usato come alternativa. Pertanto, con i valori predefiniti del parametro""
e\"
hanno lo stesso significato. Oltre a consentire di effettuare l'escape del carattereenclosure
, il carattereescape
non ha significato speciale; non è nemmeno destinato ad effettuare l'escape di se stesso.
A partire da PHP 8.4.0, dipendere dal valore predefinito di
escape
è deprecato.
Deve essere fornito esplicitamente, sia per posizione che mediante l'uso
dei named arguments.
When escape
is set to anything other than an empty string
(""
) it can result in CSV that is not compliant with
» RFC 4180 or unable to survive a roundtrip
through the PHP CSV functions. The default for escape
is
"\\"
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.
Restituisce un array indicizzato contenente i campi letti in caso di successo, o false
in caso di fallimento.
Nota:
Una riga vuota in un file CSV verrà restituita come un array contenente un singolo campo null e non sarà trattata come un errore.
Nota: Se si hanno problemi con il PHP che non riconosce i fine linea leggendo file creati o ospitati su un computer Macintosh, si può abilitare l'opzione auto_detect_line_endings della configurazione di runtime.
Genera un ValueError se
separator
o enclosure
non sono lunghi un byte.
Genera un ValueError se
escape
non è lungo un byte o è una stringa vuota.
Versione | Descrizione |
---|---|
8.4.0 |
L'affidamento sul valore predefinito di escape è ora
deprecato.
|
8.3.0 | Viene restituita una stringa vuota invece di una stringa con un singolo byte null per l'ultimo campo se contiene solo una chiusura non terminata. |
8.0.0 |
length è ora nullable.
|
7.4.0 |
Il parametro escape ora accetta anche una stringa
vuota per disabilitare il meccanismo di escape proprietario.
|
Example #1 Legge e stampa il contenuto di un file CSV
<?php
$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num campi sulla riga $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}
fclose($handle);
}
?>