2011-05-30 133 views
0

我有一個csv文件要讀取,但在一列中有一些不需要的字。 將需要的單詞寫入白名單陣列比創建黑名單更容易。 這是我試過的,但我得到一個空單元格。 以下腳本僅在單元索引爲5(我需要修改的列)時使用。從字符串中刪除不需要的字

$whitelist[0] = "BLACK"; 
$whitelist[1] = "RED"; 
$whitelist[2] = "ON"; 
$whitelist[3] = "BLUE"; 
$whitelist[4] = "COLOR"; 
$whitelist[5] = "YELLOW"; 
$whitelist[6] = "GREEN"; 
$whitelist[7] = "CYAN"; 
$whitelist[8] = "MAGENTA"; 
foreach($csv_line as $row){ 
    $cell = explode(' ', $row[0]); 
    foreach($cell as $b=>$v) 
     if(!in_array($cell, $whitelist)) 
      unset($cell[$b]); 
      $row[0] = implode(' ', $cell); 
} echo "<td>".$row[0]."</td>"; 

任何提示將不勝感激。

感謝, 塞巴斯蒂安

+0

這裏有一個技巧:使用[fgetcsv](http://php.net/fgetcsv)和[fputcsv](http://php.net/fputcsv)。 – netcoder 2011-05-30 16:32:15

+0

感謝您的提示。我正在使用fgetcsv。 '$ csv_line'包含來自csv文件的一行。即使沒有fgetcsv或fputcsv,'$ csv_line'也可以包含一個帶分隔符的字符串。 – sebastian 2011-05-30 16:49:14

回答

2

更改的行
if(!in_array($cell, $whitelist))

if(!in_array($v, $whitelist))
要檢查值$v未列入白名單,而不是整個$cell陣列

+0

@ gion_13感謝您的回覆。但我的細胞仍然是空的,我不知道爲什麼... – sebastian 2011-05-30 16:43:29

+0

它應該工作。嘗試用'var_dump'調試你的代碼來檢查你的單元格是否已經是空的。當達到'if'語句來檢查你的單元格單詞是否沒有被列入白名單時,你也可以回顯一些東西。 – 2011-05-30 16:52:34

+0

我想檢查第5列。現在整個行。那會是一個問題嗎? – sebastian 2011-05-30 16:56:54