2011-05-08 96 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