fprintf( resource $handle, string $format[, mixed $args[, mixed $… ]] )

fprintf( resource $handle, string $format[, mixed $args[, mixed $... ]] )は、フォーマット「$format」に基づき生成した文字列を、ファイル「$handle」に書き込む組み込み関数。

vfprintf()関数と似ているが、フォーマットしたいデータを、配列ではなく、可変長引数で指定する点が異なる。

定義

整数型 fprintf( リソース型 $handle, 文字列型 $format[, 多様な型 $args[, 多様な型 $...]] );

パラメータ

リソース型 $handle

ファイルハンドル。

文字列型 $format

フォーマット。

多様な型 $args

オプション。

フォーマットしたいデータ。

多様な型 $…

オプション。

フォーマットしたいデータは、カンマ,で区切り、複数指定できる。

フォーマット

% 位置指定子 符号指定子 パディング指定子 アラインメント指定子 表示幅指定子 精度指定子 型指定子

%の後に、空白は入れずに、指定子を続けて記述する。

位置指定子

オプション。

フォーマットしたいデータが複数あり、順番を入れ替えたい場合に使う。

n番目のデータを、n$とする。1番目のデータは、1$。5番目のデータは、5$となる。

変換指定子

下記の変換指定子を、1つ以上続けて記述する。

符号指定子

オプション。

何も指定しないと、負の数にだけ、符号を付ける。正の数には、プラス符号「+」を付けない。負の数には、マイナス符号「-」を付ける。

+を指定すると、正の数にも、符号を付ける。正の数には、プラス符号「+」を付け、負の数には、マイナス符号「-」を付ける。

パディング指定子

オプション。

「表示幅指定子」に指定した長さになるまで、どんな文字で埋めるかを指定する。

  • 半角空白: 半角空白で埋める。初期設定値。
  • 0: 0で埋める。ゼロパディング。
  • '任意の一文字: 単一引用符'に続く「任意の一文字」で埋める。
アラインメント指定子

オプション。

左寄せか、右寄せかを指定する。

初期設定値は、右寄せ。

-を指定すると、左寄せ。

表示幅指定子

オプション。

最低何桁にするかを、数字で指定。

精度指定子

オプション。

数字で指定。

浮動小数点数の場合、小数点以下の小数部を、「精度指定子」に指定した数の位まで表示する。

文字列の場合、「精度指定子」に指定した文字数を超える文字を切り捨てる。

型指定子

オプション。

引数の「多様な型 $args」や「多様な型 $…」を、何のデータ型で扱うかを指定する。

  • %: パーセント記号。
  • b: 引数を整数として扱い、2進数に変換。
  • c: 引数を整数として扱い、ASCII値の文字として表現。
  • d: 引数を整数として扱い、10進数に変換。
  • e: 引数を科学記法として扱う。小文字を使う。
  • E: 引数を科学記法として扱う。大文字を使う。
  • u: 引数を整数として扱い、符号がない10進数に変換。
  • f: 引数をdoubleとして扱い、浮動小数点数として表現。
  • F: 引数をfloatとして扱い、浮動小数点数として表現。
  • g: %e および %f の短縮形。
  • G: %E および %f の短縮形。
  • o: 引数を整数として扱い、 8進数に変換。
  • s: 引数を文字列として扱う。
  • x: 引数を整数として扱い、16進数(小文字)に変換。
  • X: 引数を整数として扱い、16進数(大文字)に変換。

構文

フォーマット済み文字列をファイルに書き込む(1)

fprintf( ファイルハンドル, フォーマット, フォーマットしたいデータ );

「フォーマット」に基づき生成した文字列を、ファイルに書き込む。

フォーマット済み文字列をファイルに書き込む(2)

fprintf( ファイルハンドル, フォーマット, フォーマットしたいデータ1, フォーマットしたいデータ2, フォーマットしたいデータ3 );

「フォーマット」に基づき生成した文字列を、ファイルに書き込む。

戻り値

ファイルに書き込んだ文字列の長さを返す。

サンプル

フォーマット済み文字列をファイルに書き込む

<?php

define( "LOGFILE_DATE", "date.txt" );

if( !( $data = fopen( LOGFILE_DATE, "w" ) ) ) {
    exit( "失敗。<br />ファイル「" . LOGFILE_DATE . "」を、開けませんでした。<br />" );
}

$varYear = 2012;
$varMonth = 7;
$varDay = 3;
$format = '%04d-%02d-%02d';

fprintf( $data, $format, $varYear, $varMonth, $varDay );

echo "書込み完了<br />";

echo "下記のデータを、書き込みました。<br />";
readfile( LOGFILE_DATE );

?>

↓↓↓出力結果↓↓↓

書込み完了
下記のデータを、書き込みました。
2012-07-03

ファイル「date.txt」の内容は、

2012-07-03

ファイルに書き込んだ文字列の長さを取得

<?php

define( "LOGFILE_DATE", "date.txt" );

if( !( $data = fopen( LOGFILE_DATE, "w" ) ) ) {
    exit( "失敗。<br />ファイル「" . LOGFILE_DATE . "」を、開けませんでした。<br />" );
}

$varYear = 2012;
$varMonth = 7;
$varDay = 3;
$format = '%04d-%02d-%02d';

$varCount = fprintf( $data, $format, $varYear, $varMonth, $varDay );

echo "書込み完了<br />";
echo "書き込んだ文字列の長さは、{$varCount}<br />";
echo "下記のデータを、書き込みました。<br />";
readfile( LOGFILE_DATE );

?>

↓↓↓出力結果↓↓↓

書込み完了
書き込んだ文字列の長さは、10
下記のデータを、書き込みました。
2012-07-03

ファイル「date.txt」の内容は、

2012-07-03

CSVファイルに書き込む

<?php

define( "LOGFILE", "logfile.csv" );

if( !( $data = fopen( LOGFILE, "w" ) ) ) {
    exit( "失敗。<br />ファイル「" . LOGFILE . "」を、開けませんでした。<br />" );
}

$format = '%s,%s,%s' . "\n";

fprintf( $data, $format, "RED", "BLUE", "GREEN" );
fprintf( $data, $format, "レッド", "ブルー", "グリーン" );
fprintf( $data, $format, "赤色", "青色", "緑色" );

echo "書込み完了<br />";

echo "下記のデータを、書き込みました。<br />";
echo "<pre>";
readfile( LOGFILE );
echo "</pre>";

?>

↓↓↓出力結果↓↓↓

書込み完了
下記のデータを、書き込みました。

RED,BLUE,GREEN
レッド,ブルー,グリーン
赤色,青色,緑色

ファイル「logfile.csv」の内容は、

RED,BLUE,GREEN
レッド,ブルー,グリーン
赤色,青色,緑色

整数を、様々な変換指定子でフォーマットし、ファイルに書き込む

<?php

define( "LOGFILE", "logfile.txt" );

if( !( $data = fopen( LOGFILE, "w" ) ) ) {
    exit( "失敗。<br />ファイル「" . LOGFILE . "」を、開けませんでした。<br />" );
}

$var = 123;
fprintf( $data, "%%d: [%d]\n", $var );
fprintf( $data, "%%+d: [%+d]\n", $var );
fprintf( $data, "%%5d: [%5d]\n", $var );
fprintf( $data, "%%05d: [%05d]\n", $var );
fprintf( $data, "%%'#5d: [%'#5d]\n", $var );
fprintf( $data, "%%'#-5d: [%'#-5d]\n", $var );
fprintf( $data, "%%.2s: [%.2s]\n", $var );

echo "書込み完了<br />";

echo "下記のデータを、書き込みました。<br />";
echo "<pre>";
readfile( LOGFILE );
echo "</pre>";

?>

↓↓↓出力結果↓↓↓

書込み完了
下記のデータを、書き込みました。

%d: [123]
%+d: [+123]
%5d: [  123]
%05d: [00123]
%'#5d: [##123]
%'#-5d: [123##]
%.2s: [12]

ファイル「logfile.txt」の内容は、

%d: [123]
%+d: [+123]
%5d: [  123]
%05d: [00123]
%'#5d: [##123]
%'#-5d: [123##]
%.2s: [12]

小数を、様々な変換指定子でフォーマットし、ファイルに書き込む

<?php

define( "LOGFILE", "logfile.txt" );

if( !( $data = fopen( LOGFILE, "w" ) ) ) {
    exit( "失敗。<br />ファイル「" . LOGFILE . "」を、開けませんでした。<br />" );
}

$var = 1.23456789;
fprintf( $data, "%%f: %f\n", $var );
fprintf( $data, "%%+f: %+f\n", $var );
fprintf( $data, "%%0.10f: %0.10f\n", $var );
fprintf( $data, "%%.3f: %.3f\n", $var );
fprintf( $data, "%%.3s: %.3s\n", $var );

echo "書込み完了<br />";

echo "下記のデータを、書き込みました。<br />";
echo "<pre>";
readfile( LOGFILE );
echo "</pre>";

?>

↓↓↓出力結果↓↓↓

書込み完了
下記のデータを、書き込みました。

%f: 1.234568
%+f: +1.234568
%0.10f: 1.2345678900
%.3f: 1.235
%.3s: 1.2

ファイル「logfile.txt」の内容は、

%f: 1.234568
%+f: +1.234568
%0.10f: 1.2345678900
%.3f: 1.235
%.3s: 1.2

文字列を、様々な変換指定子でフォーマットし、ファイルに書き込む

<?php

define( "LOGFILE", "logfile.txt" );

if( !( $data = fopen( LOGFILE, "w" ) ) ) {
    exit( "失敗。<br />ファイル「" . LOGFILE . "」を、開けませんでした。<br />" );
}

$var = "sample";
fprintf( $data, "%%s: [%s]\n", $var );
fprintf( $data, "%%+s: [%+s]\n", $var );
fprintf( $data, "%%10s: [%10s]\n", $var );
fprintf( $data, "%%010s: [%010s]\n", $var );
fprintf( $data, "%%'#10s: [%'#10s]\n", $var );
fprintf( $data, "%%'#-10s: [%'#-10s]\n", $var );
fprintf( $data, "%%.3s: [%.3s]\n", $var );

echo "書込み完了<br />";

echo "下記のデータを、書き込みました。<br />";
echo "<pre>";
readfile( LOGFILE );
echo "</pre>";

?>

↓↓↓出力結果↓↓↓

書込み完了
下記のデータを、書き込みました。

%s: [sample]
%+s: [sample]
%10s: [    sample]
%010s: [0000sample]
%'#10s: [####sample]
%'#-10s: [sample####]
%.3s: [sam]

ファイル「logfile.txt」の内容は、

%s: [sample]
%+s: [sample]
%10s: [    sample]
%010s: [0000sample]
%'#10s: [####sample]
%'#-10s: [sample####]
%.3s: [sam]

日付を、フォーマットし、ファイルに書き込む

<?php

define( "LOGFILE", "logfile.txt" );

if( !( $data = fopen( LOGFILE, "w" ) ) ) {
    exit( "失敗。<br />ファイル「" . LOGFILE . "」を、開けませんでした。<br />" );
}

$varYear = 2012;
$varMonth = 7;
$varDay = 3;
$format = '%04d-%02d-%02d';
fprintf( $data, "年月日(YYYY-MM-DD): $format\n", $varYear, $varMonth, $varDay );
$format = '%2$02d-%3$02d-%1$04d';
fprintf( $data, "月日年(MM-DD-YYYY): $format\n", $varYear, $varMonth, $varDay );
$format = '%3$02d-%2$02d-%1$04d';
fprintf( $data, "日月年(DD-MM-YYYY): $format\n", $varYear, $varMonth, $varDay );
$format = '%04d年%02d月%02d日';
fprintf( $data, "年月日(YYYY年MM月DD日): $format\n", $varYear, $varMonth, $varDay );

echo "書込み完了<br />";

echo "下記のデータを、書き込みました。<br />";
echo "<pre>";
readfile( LOGFILE );
echo "</pre>";

?>

↓↓↓出力結果↓↓↓

書込み完了
下記のデータを、書き込みました。

年月日(YYYY-MM-DD): 2012-07-03
月日年(MM-DD-YYYY): 07-03-2012
日月年(DD-MM-YYYY): 03-07-2012
年月日(YYYY年MM月DD日): 2012年07月03日

ファイル「logfile.txt」の内容は、

年月日(YYYY-MM-DD): 2012-07-03
月日年(MM-DD-YYYY): 07-03-2012
日月年(DD-MM-YYYY): 03-07-2012
年月日(YYYY年MM月DD日): 2012年07月03日

複数の整数を、フォーマットし、ファイルに書き込む

<?php

define( "LOGFILE", "logfile.txt" );

if( !( $data = fopen( LOGFILE, "w" ) ) ) {
    exit( "失敗。<br />ファイル「" . LOGFILE . "」を、開けませんでした。<br />" );
}

$varA = 1;
$varB = 2;
$varC = 3;
$varD = $varA+$varB+$varC;
$format = '%d+%d+%d=%d';
fprintf( $data, "$format\n", $varA, $varB, $varC, $varD );
$format = '%1$d+%2$d+%3$d=%4$d';
fprintf( $data, "$format\n", $varA, $varB, $varC, $varD );
$format = '%3$d+%2$d+%1$d=%4$d';
fprintf( $data, "$format\n", $varA, $varB, $varC, $varD );

echo "書込み完了<br />";

echo "下記のデータを、書き込みました。<br />";
echo "<pre>";
readfile( LOGFILE );
echo "</pre>";

?>

↓↓↓出力結果↓↓↓

書込み完了
下記のデータを、書き込みました。

1+2+3=6
1+2+3=6
3+2+1=6

ファイル「logfile.txt」の内容は、

1+2+3=6
1+2+3=6
3+2+1=6

整数を、様々な型指定子でフォーマットし、ファイルに書き込む

<?php

define( "LOGFILE", "logfile.txt" );

if( !( $data = fopen( LOGFILE, "w" ) ) ) {
    exit( "失敗。<br />ファイル「" . LOGFILE . "」を、開けませんでした。<br />" );
}

$var = 123;
fprintf( $data, "%%b: %b\n", $var );
fprintf( $data, "%%c: %c\n", $var );
fprintf( $data, "%%d: %d\n", $var );
fprintf( $data, "%%e: %e\n", $var );
fprintf( $data, "%%E: %E\n", $var );
fprintf( $data, "%%u: %u\n", $var );
fprintf( $data, "%%f: %f\n", $var );
fprintf( $data, "%%F: %F\n", $var );
fprintf( $data, "%%g: %g\n", $var );
fprintf( $data, "%%G: %G\n", $var );
fprintf( $data, "%%o: %o\n", $var );
fprintf( $data, "%%s: %s\n", $var );
fprintf( $data, "%%x: %x\n", $var );
fprintf( $data, "%%X: %X\n", $var );

echo "書込み完了<br />";

echo "下記のデータを、書き込みました。<br />";
echo "<pre>";
readfile( LOGFILE );
echo "</pre>";

?>

↓↓↓出力結果↓↓↓

書込み完了
下記のデータを、書き込みました。

%b: 1111011
%c: {
%d: 123
%e: 1.230000e+2
%E: 1.230000E+2
%u: 123
%f: 123.000000
%F: 123.000000
%g: 123
%G: 123
%o: 173
%s: 123
%x: 7b
%X: 7B

ファイル「logfile.txt」の内容は、

%b: 1111011
%c: {
%d: 123
%e: 1.230000e+2
%E: 1.230000E+2
%u: 123
%f: 123.000000
%F: 123.000000
%g: 123
%G: 123
%o: 173
%s: 123
%x: 7b
%X: 7B

スポンサード リンク

カテゴリー: PHP, フォーマット, 文字列, 組み込み関数 タグ: パーマリンク