2013-05-10 36 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,但本應該做的工作。