2010-08-27 76 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]; 
} 

此代码应该为你工作,即使当时我认为会有一些问题,文件的字符编码格式,你仍然面临着加密的文本问题,使用此代码后。