javascript - 如何使用 php 在 html 表中显示日志文件数据?
问题描述
我想使用 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 India IN Punjab
我想在表格行中显示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第 4 行
然后第六行和用户点击了这封电子邮件:mike@jvpsus.com
最后第七排印度旁遮普邦
每当我试图获取数组中的数据时,在 foreach 数组分解为键和值之后。我试图用空间爆炸 (' ', $string)。但是整个句子字符与空间进入单独的数组索引。
我想要的输出如下
这是我的代码
$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));
}
?>```
解决方案
提醒您:尝试以 csv 格式登录可能更容易解析日志行。但如果不可能,那么:
- 更改您的正则表达式。并将其移出
foreach
循环。 - 如果你想让它成为一个表格,请使用
<table>
,<tr>
,<td>
标签。 - 如果将其更改为 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";
推荐阅读
- php - 未捕获的错误:调用未定义的函数 wp_redirect()
- android - 如何检测某人何时离开应用程序?
- c# - 如何验证正在使用 selenium 播放实时视频?
- java - 原因:实际参数列表和形式参数列表的长度不同
- vb.net - mdi 子表单不会以同一个父项中的另一个 mdi 子表单为中心?
- google-colaboratory - 如何在 google-colab 中自动完成,即避免点击标签?
- mysql - 比较一个 nn 关系的所有记录
- java - 如何用东西替换一条线?
- matlab - 为 3D 空间中的点生成随机运动
- python - 在 Docker 上使用 python fcntl.ioctl 给出 Errno 22