ここではinfo.phpファイル「お知らせ」詳細画面を作っていきたいと思います。詳細画面ではinfo.txtの内容を読み込んで、1行目を見出し、2行目以降をお知らせ本文としていきたいと思います。イメージはこんな感じです。
完成イメージは下記の通りです。
info.txtファイル
まずは<!DOCTYPE html> より前の冒頭文から追記していきます。
info.php
<?php $fp = fopen(“info.txt”, “r”); | ファイルを開きます。それを変数fpへ代入します。モードは「r」にて読み込み専用です。 |
$line = array(); $body = ”; | $lineでファイル内容を1行ずつ格納するための配列を作ります。 $body は本文を格納するための配列です。 |
if($fp){ while(!feof($fp)){ $line[] = fgets($fp); } fclose($fp); } ?> | ファイルが正しく開けたら、while構文を使って配列$lineにfgetsした内容を1行ずつ格納していきます。 feof関数(エフイーオーエフ)はファイルの末端かどうかをチェックする関数です(end of file、略してEOF:テキストファイルには改行コードのように隠れたコードが含まれていて、同様にファイルの末尾にもEOFというコードが付いている) TRUEの場合、末端を示します。 つまりは、このwhile関数はファイルが末端でない間、$lineに1行ずつ格納する処理をします。 読み込みが終わったらfclose関数でファイルを閉じます。 |
<!DOCTYPE html> ~ |
次に本文部分のプログラムです
<h1>お知らせ</h1> <?php if(count($line) > 0){ for($i = 0; $i < count($line); $i++){ | count関数を使って$lineの行数を数えています。 正しくファイルが開けて、ファイルの中身が配列に格納されてれば1行以上の内容があるはずなので、countの返り値は0以上になるはずですね。 ファイルがうまく開けてないとelseの処理に移ります。うまく開けたらfor構文に移り、0行目から最後の行まで1行ずつ処理していきます。 |
if($i == 0){ echo ‘<h3>’.$line[0].'</h3>’; } else { $body .=$line[$i].'<br>’; } } } else { $body = ‘お知らせはありません’; } echo ‘<p>’.$body.'</p>’; ?> | $line[0]の0番目の要素は1行目のタイトル(「会議の日程について」)に該当。 もし$iが0だったら、$line[0]は<h3>タグで表示。 2行目以降は、末尾に改行タグ<br>をつけて$body変数に追加していきます。代入ではなく.=(ドットイコール)なので前に追加されていきます。すべての処理が終わったら<p>タグに挟んで$body変数を表示します。 |
実装結果