【问题标题】:Extracting data from a txt file in php从php中的txt文件中提取数据
【发布时间】:2013-05-05 10:58:04
【问题描述】:

我有一个日志文件,它是一个 .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;

?>

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

有什么想法吗?

【问题讨论】:

    标签: php loops foreach explode


    【解决方案1】:

    试试这个:

    $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,但这应该可以完成工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-16
      • 2020-11-26
      相关资源
      最近更新 更多