PHP计算文本文件中的重复项

时间:2013-08-05 13:38:29

标签: php file text count duplicates

所以我有一个文本文件,其中包含人们输入的游戏列表,所有这些都是像这样的新内容:

<tr><td>proatowning</td><td>Final Fantasy X</td></tr>
<tr><td>drunkenveteran</td><td>Trials Evolution</td></tr>

现在我想要的是某种代码,它允许我计算重复项并按照它使用的次数返回它们。

例如:
5 人们提交“最终幻想X” 3 人们提交“试验进化”。

然后它应该返回这样的东西:

<tr><td>Final Fantasy X</td><td>5</td></tr>
<tr><td>Trials Evolution</td><td>3</td></tr>

这样我就可以在表格中使用它了。如果它只能显示前10个投票最多(最重复)的游戏,那将是非常棒的。

感谢。

2 个答案:

答案 0 :(得分:0)

我认为你正在寻找这样的东西,只需拔出第二个<td>标签,检查数据是否已存在于数组中,如果是,则添加到计数中,如果没有,则添加元素到阵列。然后在最后输出数组。

$lines = file('myfile.txt');
$games = array();

foreach ($lines as $line_num => $line) {
    $pos = strpos($line,'<td>',8);//start the search for <td> after first one
    $game = substr($line,$pos);
    $game = substr($game,4,-4);//remove the <td> tags
    foreach($games as $name => &$count){
        if ($game == $name) $count++;
        else $games[$game] = 1;
    }
}
foreach($games as $name => $count){
    echo "<b>".$count."</b> people submitted \"".$name."\"\n";
}

答案 1 :(得分:0)

我重写并简化了Optox答案中的代码,它对我有用:

$lines = file('myfile.txt');
$games = array();
foreach ($lines as $line_num => $line) {
    $pos = strpos($line,'<td>',8);//start the search for <td> after first one
    $game = substr($line,$pos);
    $game = substr($game,4,-4);//remove the <td> tags
    if (array_key_exists($game,$games) $games[$game] += 1;
    else $games[$game] = 1;
}
foreach($games as $name => $count){
    echo "<b>".$count."</b> people submitted \"".$name."\"\n";
}