从php中的txt文件中提取数据

时间:2013-05-10 17:21:26

标签: php loops foreach explode

我有一个显示.txt文件的日志文件 IP地址,TIMESTAMP,FILENAME,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;

?>

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

有什么想法吗?

1 个答案:

答案 0 :(得分: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,但这应该可以完成工作。