2011-01-06 3 views
0

私はPHPでニュースフィードのものを作ろうとしています。PHPのテキストファイルのニュースの更新

私はテキストファイルnews.txtとphpファイルindex.phpを持っています。

私は周囲のコードを行い、テキストファイルを開閉しました。今、news.txtファイルの先頭に新しいニュース項目$ newsnewを挿入する方法と、news.txtファイル内の古いボトムニュースファイルを削除する方法があります。

ファイル全体を削除してもう一度書き込むことなくこれを行う方法はありますか?

EDIT:各ニュース項目はちょうど小さな文字列、たとえば500文字、1行です。

答えて

0

news.txt内の項目を配列としてインポートするにはfile()関数を使用し、新しい最初の項目を追加するにはarray_unshift()を使用し、最後の項目を削除するにはarray_pop()を使用します。バック単一の文字列に配列に参加してnews.txtするためにそれを書く:

$items = file('news.txt'); 
array_unshift($items, 'New item 1'); 
array_pop($items); 
$newstext = implode(PHP_EOL, $items); 
// write $newstext to the external file 
+0

その長い道のりですが、十分に近い私は推測する! – David19801

1

データベースを使用します。

あなたが本当に、テキストファイルを使用するすべてのニュース項目ごとに異なるファイルを使用し、順次同様にそれらに名前を付ける必要がある場合:

  • news001.txt
  • news002.txt
  • など

ファイルを追加したり削除したり、ディレクトリを読み込んだり表示したりすることができます。

0

これがXMLファイルの場合は、それを読み取って解析し、DOM内の最後の子を削除できます。しかし、DBにすべてのデータがある場合は、毎回ファイルを書き換えるほうがずっと簡単です。

EDIT:あなたの編集後:

  • ラインによって、古いファイルの行を読んで、新しいものにそれを書く
  • 新しいファイルに新しい行を記述します。これはのように、はい、あなたはそれを行うことができます
  • (カウントまたはEOFによって検出された)最後の行をスキップ
  • いいえ、ありません、古いファイルを削除して、新しい
0

の名前を変更します。しかし、メッセージを逆順に格納することを検討することもできます。そうすれば、新しいニュースが届いたときにnews.txtに追加するだけです。

+0

私はこれについて考えましたが、最初に新しい行を追加すると最初の行を削除する方法ですか? – David19801

+0

@ David19801いいえ、通常は何も削除する必要はありません。すべてのニュースを表示したくない場合は、終了する前に(たとえば)10kBにしてください。 – Oswald

0

ファイル全体をもう一度書き込むことなく、ファイルの先頭に前置することはできません。 fopen()に "a"モードフラグをつけてファイルの末尾に追加することもできますが、ファイル全体をもう一度書き出す必要がある最も古い項目を削除することができます。

実際、データベースは1つのテキストファイルではなく、ここでは解決策です。

0

そこには、フラットテキストファイルを使用してそれを行うことができます多くの方法がありますが、私はそれはそれはそれだけの価値は本当にわかりません。軽量の構造化ファイルまたは組み込みデータベースを使用できます。たとえば、通常のファイルに保存するSQLiteなど、追加の設定は必要ありません。

関連する問題