2010-08-27 4 views
0

Je veux lire un fichier csv ligne par ligne. J'ai écrit du code mais il donne une sortie de manière cryptée. mon code estlire le fichier csv dans php

$row = 1; 
$handle = fopen($_FILES['csv']['tmp_name'], "r"); 
while (($data = fgetcsv($handle, 1000,",")) != FALSE) { 
     $num = count($data); 
     echo "<p> $num fields in line $row: <br /></p>\n"; 
     $row++; 
     for ($c=0; $c < $num; $c++) { 
      echo $data[$c] . "<br />\n"; 
     } 
    } 
    fclose($handle); 
+0

En outre, pouvez-vous marquer le poste avec php aussi (votre ligne d'objet le dit, mais cela aide si vous pouvez étiqueter la question aussi) – Gangadhar

+0

Si vous pouvez nous montrer des exemples de données d'entrée, les résultats attendus et vos résultats actuels. la réponse peut être plus facile à voir. – ghoti

Répondre

0

Ceci est essentiellement exactement le même que l'exemple # 1 dans le PHP fgetcsv() docs. Vérifiez votre fichier d'entrée, car il n'y a rien ici qui "crypterait" des données. Si le fichier est codé dans un jeu de caractères étrangers et que vous utilisez la norme ISO-8859, vous obtiendrez une sortie "cryptée".

1

ici Je soumets un exemple de code pour lire les données d'un fichier csv.

// Set path to CSV file 
$csvFile = 'test.csv'; 
$file_handle = fopen($csvFile, 'r'); 
//fgetcsv($file_handle);//skips the first line while reading the csv file, uncomment this line if you want to skip the first line in csv file 
while (!feof($file_handle)) 
{ 
    $csv_data[] = fgetcsv($file_handle, 1024); 
} 
fclose($file_handle); 

/*echo '<pre>'; 
print_r($csv_data); 
echo '</pre>';*/ 

foreach($csv_data as $data) 
{ 
    echo "<br>column 1 data = ".$data[0]; 
    echo "<br>column 2 data = ".$data[1]; 
} 

Ce code devrait travailler pour vous, même après avoir utilisé ce code si encore vous faites face à un problème de texte crypté alors je pense qu'il y aurait un problème avec le document caractère format de codage.