fseek
そふぃのPHP入門 >> PHP関数リファレンス >> ファイルシステム関数 >> fseek

fseek

解説 ファイルポインタの位置を移動する
書式 int fseek( resource handle , int offset [, int whence ] )
int fseek( resource ファイルポインタ , int オフセット [, int 始点 ] )
引数 handle ファイルポインタ
offset 移動させるバイト数
whence オフセットの基準点
返値 0(移動に成功した時)/-1(失敗した時)

PHPマニュアル:fseek fseek()

fseek()関数:概略解説

fseek()はファイルポインタを指定したバイト数分移動します。

fseek()関数:返り値解説

成功した場合は0 、失敗した場合には-1を返します。

fseek()関数:引数解説

handleファイルポインタ
ファイルポインタを指定します。
offsetオフセット
移動数を指定します。移動数は基準点(始点)から何バイト移動するかをバイト数で示します。
whence始点

省略可能なオプション引数で、始点、つまり移動の開始位置を指定します。省略した場合にはファイルの最初におかれます。第3引数で指定できる値は以下の通りです。

{include file='const/fseek.tpl'}

SEEK_ENDでファイル終端より手前にファイルポインタを移動する場合、第2引数のoffset(オフセット)にはマイナスの数値を指定する必要があります。

fseek()関数:補足解説

第3引数はPHP4から追加になりましたので、それ以前のバージョンでは使用できません。

ファイルを「a」モードで開いた場合、ファイルポインタの位置に関わらず常に「追記」モードになりますので、fseek()rewind()は機能しない事になります。

fseek()関数:注意

ファイル名ではなく、ファイルポインタを指定する事に注意して下さい。ファイルポインタはfopen()関数やfsockopen()関数で正常に開かれたファイルでなければいけません。

EOFより先の位置に移動しようとしてもエラーとはならないので注意が必要です。

"http://"または"ftp://"形式のファイルポインタに対しては使わないで下さい。

fseek()関数:その他

ファイルポインタの位置を先頭に戻すにはrewind()関数が便利です。 {include file='parts/goto.tpl' goto=$goto[0]}

参考関数

  • fopen() ---- ファイルまたはURLを開く
  • ftell() ---- 現在のファイルポインタの位置を取得
  • rewind() ---- ファイルポインタの位置を先頭に戻す

サンプルスクリプト

簡単な利用例

  1. <?php
  2. $fp = fopen( "somefile.html", "r" );
  3. fseek( $fp, 20 ); // ポインタを20バイト移動
  4. fseek( $fp, -15, SEEK_CUR ); // ポインタを現在の位置から15バイト戻す
  5. fseek( $fp, 0, SEEK_END ); // ポインタをファイルの終端に移動
  6. fclose( $fp );
  7. ?>

rewind()関数とfseek()関数

  1. <?php
  2. // 以下の記述はすべて同じ機能を持つ
  3. rewind( $fp );
  4. fseek( $fp, 0 );
  5. fseek($fp, 0, SEEK_SET);
  6. ?>