簡単なテキストカウンタを作ってみましょう。ウェブを見るたびに「あなたは、○人目のお客様です。」とか表示されるよく見るやつです。まず、今日使うメインの関数『fopen』から勉強しましょう。
ファイルポインタというものが重要になるので、注意してみてください。
fopen
説明 | ファイルまたはURLを開く |
区分 | ファイル関数 |
fopen(filename,mode,use_include_path) 記載例:fopen(‘count.txt,’r+’) |
filename | ファイル名称 |
mode | ファイルを開くときのモードの指定 |
成功時 | ファイルポインタ |
失敗時 | FALSE(ファイルを開くのを失敗した時) |
r | 読み込みのみ。ファイルポインタは先頭。 |
r+ | 読み書き可能。ファイルポインタは先頭。 |
w | 書き込のみ。ファイルポインタは先頭。ファイルサイズは0。ファイルが存在しない場合は、新規作成。 |
w+ | 読み書き可能。ファイルポインタは先頭。ファイルサイズは0。ファイルが存在しない場合は、新規作成。 |
a | 追加書き込み。ファイルポインタは終端。ファイルが存在しない場合は、新規作成。 |
a+ | 追加書き込み可能で、読み取りが可能。ファイルポインタは終端。ファイルが存在しない場合は、新規作成。 |
x | 書き込みのみで開く。ファイルポインタは先頭。ファイルが存在する場合fopen関数は失敗し、E_WARNINGレベルエラーを返す。ファイルが存在しない場合は、新規作成。 |
x+ | 読み込み、書き込み可能。ファイルポインタは先頭。ファイルが存在する場合fopen関数は失敗し、E_WARNINGレベルエラーを返す。ファイルが存在しない場合は、新規作成。 |
fclose | ファイルポインタを閉じる |
fwrite | fputsと同様(エイリアス) |
fgets | ファイルから1行取得 |
file | ファイルの内容を全部取得して、配列に格納 |
fread | 長さ(省略可能) ファイルを読み込む(バイナリーモード) |

下記が今日学習するソースです。簡単に流れを記載します。
1.ファイルポインタを開く
2.現在の数値を読み込む
3.数値を1つ増やす
4.ファイルポインタを先頭に戻す
5.新しい数値を書き込む
6.ファイルポインタを閉じる
このような流れでプログラムは作られています。
1 2 3 4 5 6 7 8 9 |
<?php $fpt = fopen( "count.txt", "r+" ); $count = fgets( $fpt, 7 ); $count++; rewind( $fpt ); fputs( $fpt, $count ); fclose( $fpt ); echo 'サイトOPENから'.$count.'回目の訪問です。'; ?> |

1 |
$fpt = fopen( "count.txt", "r+" ); |
[2行目] まず、ファイルポインタを変数とします。今回は変数を『$fpt』にします(これは好きに決めてOKです)。
fopenで開くファイル名を指定します。今回は『count.txt』とします。モードは読み書き可能である『r+』を指定します。
1 |
$count = fgets( $fpt,7 ); |
[3行目] 『fgets』は、指定したファイルから1行読み込む関数です。今回7と設定しているので、先頭から6バイトを読み込みます。
『設定した数値-1』が読み込むバイト数になるので、注意してください。
1 |
$count++; |
[4行目] count++は数値を1つUPします。例えば[3行目]で取得した値が『3』であるならば、ここでは『4』になります。
1 |
rewind( $fpt ); |
[5行目] 『rewind』は引数で指定したファイルポインタの位置を先頭に戻します。これが結構重要で、rewindをしないと、横に数字がどんどん並んでしまいます。例)012345・・・。つまり数字の後ろにポインタがある状態が続くのです。rewindをお忘れなく!!
1 |
fputs( $fpt, $count ); |
[6行目] 『fputs』でファイルに数字を書き込みます。fputs(ファイルポインタ,文字列)の形式です。ファイルポインタは『$fpt』書き込みたい数字は『$count』ですね。『fputs』と『fwrite』は同じ意味なのでどちらを使ってもOKです。
1 |
fclose( $fpt ); |
[7行目] ファイルポインタを閉じましょう。『fclose』を使います。ここで注意が必要なのは閉じるのはポインタです。ファイル名を指定しないようにしてください。ポインタは『$ftp』ですね。
1 |
echo 'サイトOPENから'.$count.'回目の訪問です。'; |
[8行目] 最後に『echo』を使って、結果を表示させてみましょう。
人気記事一覧
- MySQL 最大の値・最新の日付データを1つ抽出する方法(MAX)
- [CakePHP] XformHelperの使い方
- Linux: スワップファイル(swp)の削除方法
- HTMLのForm methodとactionについて
- PHPでカンマ区切りデータを配列に入れる方法 (explode)
- [エラー対処] failed to open stream: No such file or directory
- [vsftp] FileZillaから接続できない場合の対処法
- PHP5.1→PHP5.3へバージョンアップする方法(CentOS)
- [CSS]ブロック要素(div)の高さを、内部のfloat要素に合わせて自動調整する
- PHPでテキストを1行ずつ読み込む方法(file_get_contents,explode)
関連記事一覧
- PHPでテキストを1行ずつ読み込む方法(file_get_contents,explode)
- バーチャルホスト(複数ドメイン運用)で.htaccessを使えるようにする方法
- ez-HTML 文字コードutf8のファイルを読み込む
- Linux: スワップファイル(swp)の削除方法
- Linux ファイルの検索
- PHPでテキストを1行ずつ読み込んで処理する方法 (explode,for)
- [HTML5]PHPでファイルの複数アップロード
- [CakePHP2]DebugKitの使い方
- MySQL テーブルのデータ量を知る方法 (data-length)
- Cronが動かない場合の確認事項(LINUX)