0

我有一个日志文件,它是一个.txt显示 IP 地址、时间戳、文件名、HTTP 状态码、带宽、用户代理 的文件

103.239.234.105 -- [2007-04-01 00:42:21] "GET articles/learn_PHP_basics HTTP/1.0" 200 12729 "Mozilla/4.0"
207.3.35.52 -- [2007-04-01 01:24:42] "GET index.php HTTP/1.0" 200 11411 "Mozilla/4.0"

我需要找出 1. 当月的文件请求总数。2. 来自文章目录的文件请求数。3. 一个月内文件请求消耗的总带宽。4. 导致 404 状态错误的请求数。显示产生这些 404 错误的文件名列表(如果多次请求相同的错误文件名,请尽量不要重复文件名。

我设法获得了文件总数:

<?php
$file="april.txt";
$linecount = 0;
$handle = fopen($file, "r");
while(!feof($handle)){
$line = fgets($handle);
$linecount++;
}

fclose($handle);

echo $linecount;

?>

要获取我知道的数据,我需要将字符串分解为一个数组并循环遍历数组以计算所需的信息,但我正在努力正确分解它,以便正确分解数组。

有任何想法吗?

4

1 回答 1

0

尝试这个:

$test = '103.239.234.105 -- [2007-04-01 00:42:21] "GET articles/learn_PHP_basics HTTP/1.0" 200 12729 "Mozilla/4.0"';
$NotNeeded = array(' --','[',']','GET ',' HTTP/1.0');
$test = str_replace($NotNeeded,NULL,$test);
$test2 = explode(' ',$test);

var_dump($test2);

这是结果:

array(7) {
  [0]=>
  string(15) "103.239.234.105"
  [1]=>
  string(10) "2007-04-01"
  [2]=>
  string(8) "00:42:21"
  [3]=>
  string(27) ""articles/learn_PHP_basics""
  [4]=>
  string(3) "200"
  [5]=>
  string(5) "12729"
  [6]=>
  string(13) ""Mozilla/4.0""
}

您需要连接索引 2 和 3,但这应该可以完成工作。

于 2013-05-10T17:30:40.313 回答