SplFileObject::fscanf

フォーマットに従ってファイルからの入力をパースする

説明

public arrayintnull SplFileObject::fscanf(string $format, mixed &...$vars)

ファイルから 1 行読み込み、format に従って解釈します。

format 文字列のホワイトスペースはファイルからの行のホワイトスペースとマッチします。このことが意味するのはフォーマット文字列のタブ (\t) でさえも入力ストリームの 1 つのスペース文字とマッチしてしまうということです。

パラメータ

format

string を解釈するフォーマット。 sprintf のドキュメントにある説明と比べて、以下の違いがあります。

  • ロケールに対応していません。
  • FgG および b はサポートしていません。
  • D は十進数値を表します。
  • i は基数検出つきの整数値を表します。
  • n は処理する文字数を表します。
  • s は、空白文字を読み取ると停止することを示します。
  • argnum$ の代わりに * を指定すると、 この変換仕様に従った値の代入を抑制します。

vars

オプションの割り当て値。

戻り値

このメソッドに渡される引数がひとつしかない場合、処理される値は配列として返されます。そうでなければ、オプションパラメータが渡される場合、メソッドは割り当て値の個数を返します。オプションパラメータは参照渡しでなければなりません。

例1 SplFileObject::fscanf の例

<?php
$file = new SplFileObject("misc.txt");
while ($userinfo = $file->fscanf("%s %s %s")) {
    list ($name, $profession, $countrycode) = $userinfo;
    // $name $profession $countrycode で何かを行う
}
?>

users.txt の内容

javier   argonaut    pe
hiroshi  sculptor    jp
robert   slacker     us
luigi    florist     it

参考

  • fscanf
  • sscanf
  • printf
  • sprintf