PHPのテキストデータ、重複したデータを表示するにはどうすればよいですか?重複データを削除し、重複データの 1 つだけを保持するにはどうすればよいですか?
データ ファイル ip.txt、次のような IP データの一部は同じです:
1348453617|95.6.5.162|2012-09-24 10:26:57
1348453024|180.254。 252.144| 2012-09-24 10:17:04
1348453020|180.254.252.144|2012-09-24 10:17:00
1348453018|180.254.252.144|2012-09-2 4 10:16:5 8
1348453008|112.210.114.169|2012-09-24 10:16:48
1348453007|112.210.114.169|2012-09-24 10:16:47
1348372772| 119.178 .17.181|2012- 09-23 11:59:32
1348363141|110.187.62.65|2012-09-23 09:19:01
IP データが重複するコンテンツのみを表示および出力する php ファイルの作成方法、例:
1348453024|180.254.252.144|2012-09-24 10:17:04
1348453020|180.254.252.144|2012-09-24 10:17:00
1348453018 |180.254 .252.144| 2012-09-24 10:16:58
1348453008|112.210.114.169|2012-09-24 10:16:48
1348453007|112.210.114.169|2012-09-24 10:16:4 7
再度、php を実行し、重複データを削除し、重複データの最後の項目のみを保持する方法を取得します。 180.254.252.144|2012-09-24 10:17:04
1348453008|112.210.114.169|2012-09-24 10:16:48
1348372772|119.178.17.181|20 12-09-23 11:59 :32
13 48363141|110.187 .62.65|2012-09-23 09:19:01
//専門家が php ファイルを作成して、上記の効果
$ipfile="ip.txt ";
if($del==1){
$old=file("$ipfile");
$num=count($old );
$fp=fopen("$ ipfile","w");
$no=$num-1;
for ($i=0;$i<$num; $i++){
list($usre, $ip,$time)=explode("|",$old[$i]);
if($ip!=$delip){ fputs($fp ,$old[$i]); }
}
fclose($fp);
}
//ip.php?del=1&delip=$ip このように書くと、重複した IP がすべて削除されます。重複した IP を削除し、最後の重複した IP を保持するにはどうすればよいですか?>
------解決策-------------- ------
for ($i=0;$i list($usre,$ip,$time)=explode("|",$old[$i]); if ($ip!=$delip){ fputs($fp,$old[$i]); }
}
が ($i= の場合)
$t = array();
に変更されました0;$i list($usre,$ip,$time)=explode("|",$old[$i]);
if(isset($t [$ip])) {
unset($old[$t[$ip]]);
unset($t[$ip]);
}
$t[$ip] = $i;
}
fputs($fp, join('', $old));
------解決策----------------------
$fp= fopen ("ip.txt","r"); while($file=fgets($fp)){
$arr[]=trim($file);
}
for($i=0;$i
$t1 [ ]=array("list"=>$t[0],"ip"=>$t[1],"time"=>$t[1]);
}
for($j=0;$j
}else{
$t2[]=$t1[$j];
}
}
fclose($fp);
$fp2=fopen ( "ip.txt","w");
foreach($t2 as $val){
$t3=$val['list']."|".$val['ip'] " |".$val['time'];
fwrite($fp2,$t3."rn");
}
fclose($fp2);
?>
テスト済み、問題ありません