2012-01-07 132 views
-1

我正在爲廣告客戶從doubleclick下載csv報告。我的客戶需要將csv保存到數據庫表中。在將csv保存到數據庫之前,我需要從頂部刪除幾行,從底部刪除總行。有沒有PHP中的任何功能,我可以刪除我從csv文件指定的行?使用PHP有條件地從CSV文件中刪除行

+0

你覺得有什麼辦法可以讓你的問題更具體嗎? – davogotland 2012-01-07 05:20:26

+0

可能的重複[如何打開一個文件從X行到PHP行?](http://stackoverflow.com/questions/514673/how-do-i-open-a-file-from-line- x-to-line-y-in-php) – Gordon 2012-01-07 11:16:13

+0

[PHP讀取CSV並按日期過濾]的可能重複(http://stackoverflow.com/questions/2127775/php-read-csv-and-filter-by-日期) – Gordon 2012-01-07 11:17:48

回答

0

沒有具體的功能,但有幾種方法來完成它。

如果你有足夠的內存來一次保留在內存中的整個文件,您可以將文件轉換爲數組:

$data=explode("\n",file_get_contents("path/to/csv_file"); 

然後,擺脫總數的底部,你可以只是用類似的方法取消最後一行:

unset($data[sizeof($data)-1); 

工作方式是數組中的每一行都編號,但從零開始。 「sizeof」將是行數,但是由於我們從零開始計數,所以它會是太多。

要從頂部刪除一些行,你可以

unset($data[0]); and unset($data[1]); 

然後通過行使用foreach()功能循環,並插入到數據庫:

foreach($data as $line){ 
/// parse your $line 
/// Insert row into database 
} 
+0

而不是提及fgetcsv(),或者如果文件對於內存來說太大 – 2012-01-07 07:17:04