В настоящее время я использую следующий 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 строк, а не перечислять абсолютно все из того, что по существу является файлом журнала?
Вы ищете функцию array_slice
:
array_slice()
возвращает последовательность элементов из массива массива, как указано смещением …
$lines = file(...); $lines = array_slice($lines, -50);
Используйте array_slice()
чтобы array_slice()
последние 50 элементов $lines
до запуска цикла foreach() { }
.
$lines = array_slice($lines, -50);
Другая альтернатива – это сделать свой расчет и пропустить все, кроме X последних:
$last = 50; $count = count($lines); foreach ($lines as $line) { if ($count-- > $last) continue; ...