2011-05-08 95 views
0

我有一帮像文本的文本文件:
PLAYER_ENTERED name ipaddress username
但其他文字在这里PHP:如何检测从文件处理的重复信息?

我的代码如下提取ipadress和用户名:

$q = $_REQUEST["ipladder"]; 
$f = fopen("ladderlog.txt", "r"); 
while (($line = fgets($f)) !== FALSE) 
{ 
    if (strstr($line, $q)) 
    { 
     $data = explode(" ", $line); // split using the space into an array 
            // array index 0 = PLAYER_ENTERED 
     print "IP:" . $data[1] . "<br>";  // array index 1 = IP 
     print "Name: " . $data[2]; // array index 2 = name 
    } 
} 

输出是:
IP:ip地址
名称:用户名

我的问题是...我如何预防文件中出现相同事件时是否有重复条目?

+0

当任何信息相同或所有信息都相同时,重复吗? – 2011-05-08 01:53:29

+0

当输出是一样的,所以ipaddress和用户名为 – dukevin 2011-05-08 01:56:04

回答

1

如果文件不是太大和/或这是本地脚本。我会打电话file()获得行作为一个数组,然后array_unique()。然后你可以遍历这个数组来打印唯一的项目。

$q = $_REQUEST["ipladder"]; 
$f = file("ladderlog.txt"); 
$f = array_unique($f); 
foreach($f as $line) 
{ 
    if (strstr($line, $q)) 
    { 
     $data = explode(" ", $line); // split using the space into an array 
            // array index 0 = PLAYER_ENTERED 
     print "IP:" . $data[1] . "<br>";  // array index 1 = IP 
     print "Name: " . $data[2]; // array index 2 = name 
    } 
} 
+0

的文件大概是10MB,所以它有点大 – dukevin 2011-05-08 01:59:14

+0

呃,都是相对的。以上的理论工作。但是,如果性能对你来说是个问题,我建议首先将文件导入数据库,然后使用PHP。 – 2011-05-08 02:03:02

+0

array_unique():该参数应该是一个数组 为foreach提供的无效参数() 该文件需要首先是一个数组:( – dukevin 2011-05-08 02:15:58