<?php //ws_zll@foxmail.com //打开日志文件,取日志的IP和访问页面信息 function logput() { $open=file("test.log"); $i=0; foreach ($open as $value) { $arr=explode(" ", $value); //var_dump($arr); $row[$i]=array("ip"=>$arr[0],"url"=>$arr[10]); $i++; } return $row; // $open=fopen("my.log", "r"); // $i=0; // while(!feof($open)){ // $value=fgets($open); // $arr=explode(" ",$value); // $ip=$arr[0]; // //$time=$arr[3]; // $url=$arr[10]; // $row[$i]= array("ip"=>$ip,"url"=>$url); // $i++; // } return $row; } $a=logput(); //将二维数组降成一维数组,去重,调用计算函数,计算每种结果的重复次数 function array_unique_fb($array2D){ foreach ($array2D as $v){ $v = join(",",$v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串 $temp[] = $v; } $mon = array_unique($temp);//去掉重复的字符串,也就是重复的一维数组 sort($mon);//去重后的数组,对应的编号需要重新排序 return test($temp,$mon);//调用计算函数 } //计算函数,计算去重后日志的重复数 function test($all,$arr){ $number = count($all);//统计所有日志的行数 $number1 = count($arr);//统计去重后日志的行数 //用去重后的日志每一行到原生日志里比较,计算有多少重复,并计数 for($i=0;$i<$number1;$i++){ $n = 0; for ($j=0;$j<$number;$j++){ if($arr[$i]===$all[$j]){ $n++; } } // $info = array($i => array("copynumber"=>$n,"value"=>$arr[$i]));//去重后日志和重数数值组合 $info[] = array("copynumber"=>$n,"value"=>$arr[$i]);//去重后日志和重数数值组合 } //var_dump($info); return $info; } $title = array_unique_fb($a); rsort($title); foreach ($title as $value) { $pos = strpos($value['value'], "219.232.254"); if ($pos !== 0) { echo $value['copynumber']." ".$value['value']; echo "<br>"; } } ?>