导入,爆炸的Word列表无法正确比较

时间:2011-08-15 17:11:16

标签: php arrays string comparison

我原来的测试实现包括使用以下代码构建一个“忽略单词”数组:

$ignoreList = array("test1", "test2", "test3");

稍后,我会测试$ ignoreList中的单个单词:

if(in_array($word, $ignoreList)){
    } else{
    $words[$word] = $words[$word] + 1;
}

这段代码完美无缺 - 稍后回显我的单词列表,$ ignoreList上没有任何单词出现。我重构了以便更容易添加或删除单词:

//Import ignore list
$ignore_raw = file_get_contents("includes/ignore.txt");
$ignoreList = explode("\n", $ignore_raw);

ignore.txt是一个纯文本文件,每个项目都在其自己的行上,没有空格。导入和爆炸似乎正在起作用,因为$ ignoreList上的print_r语句导致:

Array ( [0] => a [1] => and [2] => are [3] => as [4] => for [5] => in [6] => is [7] => more [8] => of [9] => than [10] => that [11] => the [12] => to [13] => with )

然而,比较代码停止正常工作,忽略列表中的单词再次显示在我的最终结果中。任何想法有什么不对?

1 个答案:

答案 0 :(得分:1)

您的ignore.txt文件可能有\r\n行结尾,而您的字实际上有一个尾随\r

试试:

$ignoreList = array_map('trim', file("includes/ignore.txt"));

BTW您的代码可能会被重构:

$words = array_diff($words, $ignoreList); // removes ignored words
$words = array_count_values($words); // count words