我目前正在使用以下PHP代码返回并格式化.htm文件的输出:
<?php
$es = "</span>";
$lines = file("http://www.example.com/log.htm", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach($lines as $line){
list($date, $nick, $message) = explode(" ", $line, 3);
$str = substr($nick, 4, 1);
if($str=="+"){
$nickspan = '<span style="color:teal">';
$nick = substr_replace($nick, "", 2, 2);
echo("$date $nickspan$nick$es $message <br/>
");
} else {
if($str=="@"){
$nickspan = '<span style="color:#F20707">';
$nick = substr_replace($nick, "", 2, 2);
echo("$date $nickspan$nick$es $message <br/>
");
} else {
$str = substr($nick, 3, 1);
if($str=="*"){
$nickspan = '<span style="color:purple">';
$nick = substr_replace($nick, "", 1, 2);
echo("$date $nickspan$nick $message$es <br/>
");
} else {
$nickspan = '<span style="color:grey">';
$str = substr($nick, 2, 2);
if($str=="03"){
$nick = substr_replace($nick, "", 2, 2);
}
echo("$date $nickspan$nick$es $message <br/>
");
} } } }
?>
我如何将其更改为仅显示最后50行,而不是绝对列出基本上是日志文件的所有内容?
答案 0 :(得分:2)
在运行$lines
循环之前,使用array_slice()
切片foreach() { }
的最后50个元素。
$lines = array_slice($lines, -50);
答案 1 :(得分:2)
您正在寻找array_slice
功能:
array_slice()
返回 offset 指定的数组 array 中的元素序列...
$lines = file(...);
$lines = array_slice($lines, -50);
答案 2 :(得分:0)
另一个选择是自己进行计算并跳过除最后的X之外的所有计算:
$last = 50;
$count = count($lines);
foreach ($lines as $line)
{
if ($count-- > $last) continue;
...