PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのfscanf()関数とは?使い方とフォーマット指定子を徹底解説

PHPのfscanf()関数は、オープン中のファイルから入力を読み込み、指定されたフォーマットに従って解析するための関数です。パラメータを2つだけ渡して呼び出した場合、解析結果の値が配列として返されます。

基本構文

fscanf(file_pointer, format, mixed)

パラメータの詳細

  • file_pointer − fopen()関数を使って作成されたファイルシステムポインタリソースを指定します。

  • format − 読み込むデータの形式(フォーマット)を指定します。使用できる主なフォーマット指定子は以下の通りです。

    • %% − パーセント記号(%)そのものを返す
    • %b − 2進数として読み込む
    • %c − ASCIIコードに対応する1文字として読み込む
    • %f − 浮動小数点数として読み込む
    • %F − 浮動小数点数として読み込む
    • %o − 8進数として読み込む
    • %s − 文字列として読み込む
    • %d − 符号付き10進数として読み込む
    • %e − 科学的記数法(指数表記)として読み込む
    • %u − 符号なし10進数として読み込む
    • %x − 英小文字を含む16進数として読み込む
    • %X − 英大文字を含む16進数として読み込む
  • mixed − 解析した値を代入する変数を指定します。このパラメータは省略可能です。

戻り値

fscanf()関数は、パラメータを2つだけ渡して呼び出した場合、ファイルから解析した値を配列として返します。3つ目のパラメータを指定した場合は、値が直接その変数に代入され、読み込んだ項目数が返されます。

使用例

次の例では、テキストファイルからプレイヤーの名前と順位を読み込み、画面に出力しています。

<?php
    $file_pointer = fopen("new.txt", "r");
    while ($playerrank = fscanf($file_pointer, "%s\t%d\n")) {
        list ($name, $rank) = $playerrank;
        echo "$name got rank $rank.";
    }
    fclose($file_pointer);
?>

出力結果

Amit got rank 2.

まとめ

fscanf()関数は、構造化されたテキストファイル(CSVやタブ区切りデータなど)から特定の形式でデータを読み取りたい場合に非常に便利です。フォーマット指定子を組み合わせることで、文字列・数値・浮動小数点数など、さまざまな型のデータを柔軟に解析できます。

  1. PHPのfprintf()関数とは?ストリームへのフォーマット済み文字列の書き込み方法を解説

    PHPのfprintf()関数は、指定したストリーム(ファイルなど)にフォーマット済みの文字列を書き込むための関数です。printf()と同じ書式指定が使えますが、出力先をブラウザではなくファイルやストリームにできる点が大きな特徴です。ログの記録やデータファイルの生成などに活用できます。 構文 fprintf(stream, format, argument1, argument2, ...) パラメータ stream − 文字列の書き込み・出力先となるストリーム(通常はfopen()で取得したファイルポインタを指定します) format − 出力する文字列と、変数の埋め込み方(書式)を指定

  2. PHPのgregoriantojd()関数とは?構文・パラメータ・使用例を解説

    PHPのgregoriantojd()関数は、グレゴリオ暦(現在広く使われている暦)の日付をユリウス通日(Julian Day Count)に変換し、その結果としてユリウス日番号を返す関数です。ユリウス通日は、天文学や歴史上の日付計算などで利用される連続した日数表現であり、異なる暦同士の日付比較や計算を簡単に行えるのが特徴です。 注意 − グレゴリオ暦として有効な範囲は、紀元前4714年11月25日から紀元9999年12月31日以降までとなっています。この範囲外の日付を指定すると、正しい結果が得られない場合があります。 構文 GregorianToJD(month, date, year)