2013-05-10 97 views
0

我有一个日志文件,该文件是一个.txt文件,该文件显示 IP地址,时间戳,文件名,HTTP状态代码,带宽,用户代理从一个txt文件中提取数据在PHP

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" 

我需要findout 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; 

?> 

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

任何想法?

回答

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,但本应该做的工作。