[PHP] CSV String o no?

O3B

Nuovo Utente
7 Gen 2018
3
0
1
Salve a tutti,

sono nuovo da queste parti. Sono capitato poiché riscontro un problema di comprensione nella gestione di file .CSV.
In PHP esistono due istruzioni per ottenere dati da un file CSV. La prima fgetcsv($file, $delimiter, eccc) e questo legge una riga dal CSV e rilascia un Array in cui ogni cella contiene un campo della riga letta.

Poi esiste la possibilità di utilizzare str_getcsv per file CSV String. In teoria la scelta del delimitatore non dovrebbe avere regole (',' o ';' ecc non dovrebbe cambiare il funzionamento). Eppure, se il mio file CSV ha come delimitatore il ';' la prima istruzione non funziona poichè non riesce a rilevare i diversi campi ma ne vede uno unico (quindi per accedere ai singoli campi devo applicare str_getcsv). E' come se fossi in caso di CSV String. Ma online non sono riuscito a trovare una definizione esatta.

Qualcuno più esperto mi sa dare una spiegazione plausibile?

Grazie in anticipo :)
 
Ultima modifica:
PHP esistono due istruzioni
in realtà si possono usare altri modi
se il mio file CSV ha come delimitatore il ';' la prima istruzione non funziona poichè non riesce a rilevare i diversi campi
bisognerebbe vedere il codice, sicuramente con errore,
questi i 3 esempi con relativo risultato (csv delimitato da punto e virgola)
Codice:
<?php
require_once 'myUtils/show_vars.php';

$file = 'csv.csv';


$cell = array();
$csv = fopen($file, "r");
while( !feof($csv) )
    {
    $row    = fgets($csv);
    $cell[] = explode(';', $row);
}
fclose($file);
echo "<h2>fgets->explode</h2><br />".show_var($cell);


$cell = array();
$csv = fopen($file, "r");
while( !feof($csv) )
    {
    $cell[] = fgetcsv($csv,0,';','"');
}
fclose($file);
echo "<h2>fgetcsv</h2><br />".show_var($cell);


$cell = array();
$csv = fopen($file, "r");
while( !feof($csv) )
    {
    $row    = fgets($csv);
    $cell[] = str_getcsv($row, ';', '"');
}
fclose($file);
echo "<h2>str_getcsv</h2><br />".show_var($cell);
?>
upload_2018-1-7_13-15-1.png
upload_2018-1-7_13-15-38.png
upload_2018-1-7_13-16-12.png


ps, attento alle righe vuote nel csv
 
Ultima modifica:
Ciao Marino51,

grazie mille della risposta. Ho trovato l'errore. Tra i parametri del fgetcsv() avevo omesso la dimensione poichè online avevo letto che era diventata facoltativa e omettendola si impostava a zero (illimitata) in auto.
 

Discussioni simili