1
$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);
}

私はウェブサイトのチュートリアルから作業しています。これは、他のアプリの1つで使用するための小さなチャットに変えようとしているゲストブックプログラムです。

私が立ち往生しているところは、これらの2つの行と関係があります:

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

と:

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

ファイル全体を1つの文字列に入力していることがわかります。次に、その文字列を出力します。私がGoogleから理解できなかったのは、ファイルの最初のn行だけを$oldRows変数に入力させる方法です。

良いニュースは、

</tr> 

各ファイル行の区切り文字として機能できます。悪いニュースは、そこからどこに行けばいいのかわからないことです。

$oldRows変数の入力を$filenameからn行だけに制限する方法、または$ oldRows変数をn行だけに切り捨てる方法を教えてもらえますか?

修正:

ファイルの最後の n行を取得する必要があります(最新のものが最後に追加されます)

4

2 に答える 2

2

試す

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

これにより文字列の配列が返され、for/foreachを使用できます

于 2013-03-26T07:37:40.813 に答える
1

array_sliceを使用します

次に例を示します。

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

上記のコードでは、 ncount($data) - 1)パラメータを設定する場所です。この場合、ファイルの最後の行をフェッチしています。

于 2013-03-26T07:43:27.477 に答える