【问题标题】:How to show log file data in html table using php?如何使用 php 在 html 表中显示日志文件数据?
【发布时间】:2020-01-24 07:13:34
【问题描述】:

我想使用 php 以 html 表格形式显示我的日志文件数据。我的日志文件数据看起来像

2019-08-01 07:45:13 112.196.23.170 Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0 42112452 并且用户点击了这封电子邮件:mike@jvpsus.com印度在旁遮普邦

我想在表格行显示2019-08-01 07:45:13

然后 112.196.23.170 在第二行

然后显示整个 Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0

然后 id 42112452 第四行

然后是第六行用户点击了这封电子邮件:mike@jvpsus.com

最后第七排印度旁遮普邦

每当我试图获取数组中的数据时,在 foreach 数组分解为键和值之后。我试图用空间爆炸 (' ', $string)。但是带有空格的整个句子字符进入单独的数组索引。

当我尝试 foreach 时,它会给我这个输出

下面是我想要的输出

这是我的代码


$logFile = 'testlog.log';
$lines = file($logFile); // Get each line of the file and store it as an array

// echo "<pre>";
// print_r($lines);

foreach($lines as $line)
{
    // list($date, $time, $ip, $domain,$no,$mail,$cnt, $cod, $state) = explode(' ', $line);
    $output = preg_replace('!\s+!', ' ', $line);
     echo "<pre>";
    print_r (explode(" ",$output));



}


?>```

【问题讨论】:

  • 每行的第一项和第二项的长度是否相同?
  • 如果可能,更改日志文件格式。正如您所注意到的,它很难解析
  • @BrettGregson 不
  • 第一列是日期,所以应该是一样的。接下来是IP地址?这些值中的任何一个是否为空或为空?倒数第二个字符串是否始终遵循“用户点击此电子邮件...”的格式?
  • 解决,用特殊符号分隔日志文件数据,并在符号的基础上展开值

标签: javascript php jquery arrays laravel


【解决方案1】:

提醒您:尝试以 csv 格式登录可能更容易解析日志行。但如果不可能,那么:

  • 更改您的正则表达式。并将其移到foreach 循环之外。
  • 如果你想把它做成表格,使用&lt;table&gt;&lt;tr&gt;&lt;td&gt;标签。
  • 如果将其更改为 AJAX API 会更好:
    • 以 JSON 格式返回分割后的数据。
    • 并在前端渲染。

尝试完成以下代码。

$logFile = 'testlog.log';
$lines = file($logFile); // Get each line of the file and store it as an array

// The regular expression to break lines
$rgx = '/(\d+-\d+-\d+) (\d+:\d+:\d+) (\d+\.\d+\.\d+\.\d+) (.*? \(.*\)) (.*? .*?) (\d*) (.* email: .*@.*?) (.*$)/';

echo "<table>\n";
foreach($lines as $line) {
    echo "<tr>\n";
    $output = preg_split($rgx, $line);
    ...
    echo "<td>$output[0]</td>\n"
    ...
    echo "</tr>\n";
}
echo "</table>\n";

【讨论】:

    【解决方案2】:

    制表符作为特殊符号可能会起作用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-31
      • 2014-03-24
      相关资源
      最近更新 更多