PHPリファレンス(逆引き)

PHPリファレンス
 
ファイルからフォーマットに従って読み取る( fscanf() )
スポンサードリンク

ファイルから指定した書式にフォーマットに従って読み取るには、fscanf()関数を使います。

fscanf( ファイルハンドル ,
    フォーマット )

fscanf()関数で、オープンしたファイルを1行づつ読み取り、指定したフォーマットに従って配列で返します。
ファイルの終端に達すると、FALSEを返します。

fscanf( ファイルハンドル ,
    フォーマット ,
    変数1,変数2,・・・ )

上記と異なる所は、第3引数以降で指定した変数に、読み込んだ値が代入されることです。
戻り値には、代入された数が返ってきます。
 ※フォーマットで指定する"\t"は、全ての空白(タブ、半角スペース)と一致するので注意すること!!

 フォーマットの形式は、sprintf()関数と同じです。


例1) ファイル「/temp/test.txt」をオープンして、1行づつ読み取り、表示します。
     読み込んだレコードを、空白で分割した形で配列で返します。

<?php
$handle = fopen( "c:/temp/test.txt", "r" );

while((list($str1, $str2,$str3) = fscanf( $handle, "%s\t%s\t%s" ) )) {
  echo "str1:(" . $str1 . ") str2:(" . $str2 .") str3:(" . $str3 . ")\n";
}

fclose($handle);
?>

●実行結果
str1:(aaa) str2:(bbb) str3:(ccc)
str1:(aaa) str2:(bbb) str3:(ccc)
str1:(aaa) str2:(bbb) str3:(ccc)


ファイル「c:/temp/test.txt」 の内容

aaa bbb ccc
aaa bbb ccc
aaa bbb ccc


例2) 例1のfscanf()関数の第3引数以降を指定した形式で実行します。

<?php
$handle = fopen( "c:/temp/test.txt", "r" );

while( fscanf( $handle, "%s\t%s\t%s", $str1, $str2, $str3 ) ) {
echo "str1:(" . $str1 . ") str2:(" . $str2 .") str3:(" . $str3 . ")\n";
}

fclose($handle);
?>

●実行結果
str1:(aaa) str2:(bbb) str3:(ccc)
str1:(aaa) str2:(bbb) str3:(ccc)
str1:(aaa) str2:(bbb) str3:(ccc)



スポンサード リンク


ストリームを使う( stream_context_create() )
ファイルのオープン/クローズ( fopen()、fclose() )
ファイルから1文字づつ読み込む( fgetc() )
ファイルから1行づつ読み込む( fgets() )
ファイルからフォーマットに従って読み込む( fscanf() )
ファイルの全レコードを一度に読み込む( file()、file_get_contents() )
バイナリファイルを読み込む( fread() )
ファイルに書き込む( fwrite()、fputs() )
ファイルに書き込む( file_put_contents() )
ファイルの終端を確認する( feof() )
ファイルをロックする( flock() )
CSVファイルを読み込む( fgetcsv() )
ファイルを全レコード読み込んで標準出力に出力( readfile() )
ファイルポインタ操作( fseek()、rewind()、ftell() )
一時ファイルの作成( tmpfile() )

基本API2へ
忘れっぽいエンジニアのPHPリファレンス TOPへ