1

私は現在、次の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行のみを表示するようにこれを変更するにはどうすればよいですか?

4

3 に答える 3

2

ループを実行する前にarray_slice()、の最後の50要素をスライスするために使用します。$linesforeach() { }

$lines = array_slice($lines, -50);
于 2012-07-27T01:48:10.937 に答える
2

あなたは関数を探していarray_sliceます:

array_slice()オフセットで指定された配列配列から要素のシーケンスを返します...

$lines = file(...);
$lines = array_slice($lines, -50);
于 2012-07-27T01:48:33.947 に答える
0

もう1つの方法は、自分で計算を行い、最後のX個を除くすべてをスキップすることです。

$last  = 50;
$count = count($lines);    
foreach ($lines as $line) 
{
    if ($count-- > $last) continue;
    ...
于 2013-01-08T01:34:00.277 に答える