fscanf
フォーマットに基づきファイルからの入力を処理する
説明
arrayintfalsenull fscanf(resource $stream
, string $format
, mixed &...$vars
)
フォーマット文字列におけるあらゆる空白は
入力ストリームのあらゆる空白にマッチします。
これはつまりフォーマット文字列のタブ (\t
) すらも
入力ストリームの空白1個にマッチしてしまうことを意味します。
fscanf をコールするたびに、ファイルから 1 行ずつ読み込みます。
パラメータ
-
stream
-
fopen
を使用して作成したファイルシステムポインタリソース。
-
format
-
string
を解釈するフォーマット。
sprintf のドキュメントにある説明と比べて、以下の違いがあります。
-
ロケールに対応していません。
-
F
、g
、G
および
b
はサポートしていません。
-
D
は十進数値を表します。
-
i
は基数検出つきの整数値を表します。
-
n
は処理する文字数を表します。
-
s
は、空白文字を読み取ると停止することを示します。
-
argnum$
の代わりに
*
を指定すると、
この変換仕様に従った値の代入を抑制します。
-
vars
-
オプションで代入する値。
戻り値
この関数のパラメータが二つだけの場合、処理された値は配列として返されます。
他方、オプションのパラメータが指定された場合、
この関数は、代入された値の数を返します。
オプション引数は参照渡しとする必要があります。
string
で利用可能な部分文字列よりも、
format
で期待された部分文字列の数が多い場合は、null
が返されます。
その他のエラーが発生した場合は、false
が返されます。
例
例1 fscanf の例
<?php
$handle = fopen("users.txt", "r");
while ($userinfo = fscanf($handle, "%s\t%s\t%s\n")) {
list ($name, $profession, $countrycode) = $userinfo;
//... これらの値を使用して何か行う
}
fclose($handle);
?>
例2 users.txt の内容
javier argonaut pe
hiroshi sculptor jp
robert slacker us
luigi florist it
参考
- fread
- fgets
- fgetss
- sscanf
- printf
- sprintf