« 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