【PHP8.x】fscanf関数の使い方

作成日: 更新日:

fscanf関数は、ファイルポインタから書式指定文字列に従ってデータを読み込む関数です。この関数は、指定されたファイルリソースから、特定のパターンに合致するテキストデータを抽出し、それを変数に格納する際に非常に役立ちます。例えば、ログファイルや設定ファイル、あるいはCSV形式のような構造化されたテキストファイルから、日付、数値、文字列といった特定の情報を効率的に読み取りたい場合に利用されます。

第一引数にはfopen関数などで開いたファイルポインタを、第二引数には読み込むデータの形式を指定する書式指定文字列(例:文字列は%s、整数は%dなど)を渡します。さらに、オプションとして、読み込んだ値を格納するための変数を参照渡しで追加の引数として指定することができます。これらの引数にデータが正常に割り当てられた場合、fscanf関数は割り当てられた変数の数を返します。もし、参照渡しで変数を指定しなかった場合は、パースされた値が配列として返されます。

ファイルポインタが不正であったり、読み込み中にエラーが発生したり、ファイルの終端に達してデータが読み込めなかった場合は、falseが返されます。この関数を使用することで、複雑なデータを持つテキストファイルから必要な情報を簡単に抽出・加工できるようになり、データ処理の柔軟性が高まります。

基本的な使い方

構文(syntax)

<?php
$handle = fopen("example.txt", "r");
if ($handle) {
    // example.txt から文字列、文字列、整数を読み込み、$data に配列として格納する
    // "%s" は文字列、"%d" は整数を表すフォーマット指定子
    $data = fscanf($handle, "%s %s %d");
    fclose($handle);
}
?>

引数(parameters)

$stream, string $format, mixed ...$vars

  • resource|object $stream: 読み込み対象のストリームリソース(ファイルハンドルなど)
  • string $format: 読み込むデータのフォーマットを指定する文字列
  • mixed ...$vars: 読み込んだデータを格納するための変数を可変長引数として指定

戻り値(return)

array|int|false|null

fscanf関数は、指定されたファイルポインタからフォーマット文字列に従ってデータを読み込み、その結果を配列、または読み込んだフィールド数を整数で返します。読み込みに失敗した場合はfalseを返します。