U-style PHP独学日記  Since2001 メインメニューに戻る PHPメニューに戻る
タイトルファイルを操作する関数
文書管理番号 作成日 分類1 分類2 キーワード

PHP0026

2004-02-23   fopen,fclose,feof,fgets

さていよいよファイルの操作です。実際にファイルを読込みます。これができればテキストファイルやデータファイルを読み込んで加工できるのでちょっとワクワクです。
キーワードとしてはfopen feof fgets floseの順に使っていきます。簡単に文法の確認です。

fopen("ファイル名" , モード);)
上記は通常 ハンドル名 = fopen("ファイル名"); というように記述されます。オープン(使える状態)にしてそれをハンドル(車のハンドルと考え操作するものと認識しています(私が))としているようです。

feof(fopenで指定したファイルハンドル)
eofというのはファイルの最終部につけられるマークみたいなものでこれで読込みの終わりを検出しているようですテキストではwhileと一緒に利用していました。

fgets(fopenで指定したファイルハンドル , バッファの長さ)
これが読込みを行う関数です。バッファの長さとは一度に読込む大きさをさします。必要に応じて変更すればいいと思います。あとテストはしていませんが改行でも一時読込みを停止するようです。

fclose(fopenで指定したファイルハンドル)
開いたものは閉じましょう。使いっぱなしだと机の上がごちゃごちゃになり作業エリアが狭まります(とおもっています@メモリ)


ちょっと説明が長くなってしまいました早速テストプログラムです。
<?
        
        //形式は下記の通りらしいです。ファイルをオープンできたら利用し、できないのなら
        //処理を抜けるという方法を利用しています。
        
        if(!($File_H = fopen("/var/www/html/test/test.test" , "r")))
        //ファイルをオープンして処理が異常ならば下記を実行
        {
                echo("ファイルが読込めません<br>");
                exit;
        }
                $num_Loop = 0;
                while(!feof($File_H))
                //ファイルの終わりを検出できなければ下記を実行(つまり文の途中ならば)
                {
                        
                        $Line_Buf = fgets($File_H , 100);
                        $num_Loop = $num_Loop + 1;
                        echo ($Line_Buf . "ループ回数は" . $num_Loop . "回です<br>" );
                }
        fclose($File_H);
        
?>
実行結果

注意点が上記ソースの中に記述しました。
念のためループカウンタを設けてループを回数を表示してみましたところバッファは100バイトとっているにもかかわらず改行で読込みを一時ストップしていることが判明しました。

本日の参考文献

  •  MySQL&PHPでつくるWebデータベース Spencer K Ogawa著 エーアイ出版
  •  http://www.php.net/manual/ja/