你如何检索文件的前n行? (PHP)

时间:2013-03-26 07:28:38

标签: php file fopen tokenize fputs

$fileName = file ("gstbook.txt");
$rows = count ($fileName);

// $Char is the string that will be added to the file.
if ($Char != '') 
{
  $Char = str_replace ("\n","<br>",$Char);
  $Char = strip_tags ($Char, '<br>');

  $newRow = '<tr><td>' . ($username) . ": " . ($Char) . '</td></tr>';

  $oldRows = join ('', file ('gstbook.txt') );
  $fileName = fopen ('gstbook.txt', 'w');
  fputs ($fileName, $oldRows . chr(13) . chr(10) . $newRow);
  fclose ($fileName);
}

我正在网站上的教程中工作。这是一个留言簿程序,我正试图变成一个小聊天,用于我的其他应用程序。

我被困的地方与这两行有关:

  $oldRows = join ('', file ('gstbook.txt') );

  fputs ($fileName, $oldRows . chr(13) . chr(10) . $newRow);

我可以告诉它将整个文件输入到一个字符串中。然后输出该字符串。 我无法从谷歌那里得知的是如何让它只将文件的第一个 n 行输入到$ oldRows变量中。

好消息是

</tr> 
每个文件行的

可以充当分隔符。坏消息是我不知道从哪里去。

有人会告诉我如何将$ oldRows变量的输入限制为仅来自$ filename的 n 行或者如何将$ oldRows变量减少到 n 线?

CORRECTION:

我需要获取该文件的最后 n 行(最新添加到最后)

2 个答案:

答案 0 :(得分:2)

尝试

array_map( 'trim', file( $filename ) );

这将返回字符串数组,然后您可以使用for / foreach

答案 1 :(得分:1)

我会使用array_slice

以下是一个例子:

$data = file('file.txt');
$data = array_slice($data, count($data) - 1, null, true);
print_r($data);

在上面的代码中,count($data) - 1)是您设置 n 参数的位置,在这种情况下,它是获取文件的最后一行。