[PHP-users 2246] Re: テキストファイルで掲示板

f.t. php-users@php.gr.jp
Wed, 26 Sep 2001 12:44:33 +0900


fujiyamaです。

On Wed, 26 Sep 2001 12:16:40 +0900
"ebi" <kojimitu@enjoy.ne.jp> wrote:

> 現在私はPerlを利用して掲示板を作成しています。
> データはテキストファイルにタブ区切りで保存するように
> なっております。
> 現在Perlでやっている事をPHPでも行いたいのですが
> どのようにして良いのか分かりません。
> 私の場合、PHPの利用目的がカウンターや小規模の複数掲示板なので
> わざわざPostgreSQLにアクセスするよりもテキストファイルの方が
> 負荷がかからなくてすむと思ったからです。

Perlで書けているので
マニュアルのファイルシステム関数やPerl互換の正規表現関数を読めば充分に分
かると思います。

http://www.php.net/manual/ja/
http://search.net-newbie.com/php/

file()で中身読み込んで配列に入れて
preg_replace()とかで必要な処理して
fopen()でファイルを開けてfwrite()で書き込む

とかですかね。大雑把でいいなら。

> Perlの場合のソース
> 
> ($name に名前 $mail にメール $com にコメントが入っています。)
> open DATS, "+<./bbs.dat";
> #ファイルロック
> flock(DATS,2);
> #頭に追加する為、全部読み込みSeek
> @dats = <DATS>;
> seek(DATS,0,0);
> #先頭のキーIDの数値を1足す
> $keyid = ((split/\t/,$dats[0])[0]) + 1;
> #改行を<BR>に変換
> $com =~s/\r\n/<BR>/g;
> $com =~s/\n/<BR>/g;
> #新規投稿を追加
> print DATS "$keyid\t$name\t$mail\t$com\t-\n";
> #最大30件なので29件書き込む(データが無い場合はぬける)
> for($i=0;$i<=28;$i++){
>   last unless $dats[$i];
>   print DATS $dats[$i];
> }
> truncate(DATS,tell(DATS));
> close(DATS);

いつもご迷惑かけます。 
f.t. <fujiyama@pc.mycom.co.jp>