2010-08-27 72 views
0

我想逐行讀取一個csv文件。我已經編寫了代碼,但它以加密方式提供輸出。我的代碼是在php中讀取csv文件

$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

另外,你可以請用php標記帖子(你的主題行說出來,但它也有幫助,如果你也可以標記問題) – Gangadhar 2010-08-27 05:47:30

+0

如果你能向我們展示樣本輸入數據,你的預期結果和你的實際結果,答案可能會更容易看到。 – ghoti 2012-03-06 12:44:12

回答

0

這與PHP fgetcsv()文檔中的示例#1基本上完全相同。檢查你的輸入文件,因爲這裏沒有任何東西可以「加密」數據。如果文件使用外部字符集編碼,並且您在ISO-8859上輸出,則會得到「加密」輸出。

1

這裏我提交了一些示例代碼來從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]; 
} 

此代碼應該爲你工作,即使當時我認爲會有一些問題,文件的字符編碼格式,你仍然面臨着加密的文本問題,使用此代碼後。