« PHP:fgetc()関数 | メイン | PHP:feof()関数 »

2006年11月24日

PHP:fscanf()関数

fscanf()関数は、指定したフォーマットに従ってファイルを読み取り、読み取り結果を返します。

fscanf(intFp, Format[, Val, …]);

intFp:fopen・fsockopen()関数などによって返されたファイルポインタ

Format:フォーマット識別子(sprintf()関数などで使用するものと同じ)

「%s」:文字列
「%d」:数字
「%04d」:4桁の数字・数字が4桁に満たない場合には0で埋める(例:55→0055)
「%.2f」:小数点2桁までの数字(例:3.14159→3.14)

Val:読み取り結果を格納する変数(複数指定可)

※Valを省略した場合、fscanf()関数は読み取り結果を配列として返します。
※Valを指定した場合、fscanf()関数はValに代入された値の数を返します。
Valには読み取り結果が格納されます。

Valを省略した場合の例

$fp = fopen("data.dat", "r");

while($ARRAY = fscanf($fp, "%d\t%s\t%s\n")){
    print $ARRAY[0]."<br>";
}

fclose($fp);

※上記の結果、data.datの内容をタブ区切りで読み込み、1番目のカラム(%dを指定しているので、この場合は数字)を全行出力します。

Valを指定した場合の例

$fp = fopen("data.dat", "r");

while($count = fscanf($fp, "%d\t%s\t%s\n", &$num1, &$str1, &$str2)){
    print "$num1 $str1 $str2 ({$count})<br>";
}

fclose($fp);

※上記の結果、data.datの内容をタブ区切りで読み込み、「数字 文字列 文字列 (1行あたりの読み取りに成功したカラム数)」というフォーマットで出力します。

投稿者 wing : 2006年11月24日 00:07

コメント