2011-05-30 93 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