PHP vfprintf()関数

テキストを"test.txt"という名前のテキストファイルに書き込みます:

<?php
$number = 9;
$str = "北京";
$file = fopen("test.txt", "w");
echo vfprintf($file,"北京には%d百万の自転車があります。",array($number,$str));
?>

上記のコードは以下のように出力されます:

40

以下のテキストがファイル"test.txt"に書き込まれます:

北京には900万の自転車があります。

定義と用法

vfprintf()関数は、指定された出力ストリーム(例:ファイルやデータベース)に形式化された文字列を書き込みます。

fprintf()とは異なり、vfprintf()のパラメータは配列に配置されます。配列の要素はメイン文字列の%シンボルに挿入されます。この関数はステップバイステップで実行されます。最初の%シンボルに最初の配列要素が挿入され、次の%シンボルに次の配列要素が挿入され、依此类推です。

注釈:%シンボルが多い場合、 arg パラメータがあれば、占位符を使用する必要があります。占位符は%シンボルの後に配置され、数字と"$"で構成されます。例2を参照してください。

関連する関数:

文法

vfprintf(stream,format,argarray)
パラメータ 説明
stream 必須。文字列を書き込む/出力する場所を定義します。
format

必須。文字列とその中の変数のフォーマットを定義します。

可能なフォーマット値:

  • %% - 百分号 % を返します
  • %b - 2進数
  • %c - ASCII値に対応する文字
  • %d - 記号を含む10進数(負数、0、正数)
  • %e - 小文字の科学記数法を使用(例:1.2e+2)
  • %E - 大文字の科学記数法を使用(例:1.2E+2)
  • ๱号を含まない10進数(0以上)
  • %f - ローカル設定の浮動小数点数
  • %F - 非ローカル設定の浮動小数点数
  • %g - 短い%eと%f
  • %G - 短い%Xと%f
  • %o - 8進数
  • %s - 文字列
  • %x - 小文字の十六進数
  • %X - 大文字の十六進数

追加のフォーマット値。%とアルファベットの間に配置する必要があります(例:%.2f)

  • +(数字の前に+または-を付けて符号を定義します。デフォルトでは、負数のみがマークされ、正数はマークされません)
  • '' (何を使って埋めるかを指定、デフォルトは空白です。幅指定子と一緒に使用する必要があります。例:%'x20s("x" を使用して埋める))
  • - (変数値を左詰め)
  • .[0-9] (変数値の最小幅を指定)
  • .[0-9] (小数桁数または最大文字列長を指定)

注釈:複数のフォーマット値を使用する場合、それらは上記の順序でなければなりません。

argarray 必須。引数を持つ配列で、これらの引数が挿入されます format 文字列の %% 符号の場所。

技術的詳細

返り値: 書き込まれた文字列の長さを返します。
PHP バージョン: 5+

さらに多くの例

例 1

テキストをファイルに書き込む:

<?php
$num1 = 123;
$num2 = 456;
$file = fopen("test.txt", "w");
vfprintf($file, "%f%f", array($num1, $num2));
?>

以下のテキストはファイル "test.txt" に書き込まれます:

123.000000456.000000

例 2

占位符の使用:

<?php
$number = 123;
$file = fopen("test.txt", "w");
vfprintf($file, "With 2 decimals: %1$.2f
\n小数点以下なし: %1$u", array($number));
?>

以下のテキストはファイル "test.txt" に書き込まれます:

2桁の小数: 123.00
小数点以下なし: 123

例 3

使用 printf() ですべてのフォーマット値を示します:

<?php
$num1 = 123456789;
$num2 = -123456789;
$char = 50; // ASCII文字 50 は 2
// 注釈:フォーマット値 "%%" は百分号を返します
printf("%%b = %%b <br>", $num1); // 2進数
printf("%%c = %%c <br>", $char); // ASCII文字
printf("%%d = %%d <br>", $num1); // 符号付きの10進数
printf("%%d = %%d <br>", $num2); // 符号付きの10進数
printf("%%e = %%e <br>", $num1); // 科学記数法(小文字)
printf("%%E = %%E <br>", $num1); // 科学記数法(大文字)
printf("%鑾u <br>", $num1); // 符号なしの10進数(正)
printf("%鑾u <br>", $num2); // 符号なしの10進数(負)
printf("%%f = %f <br>", $num1); // 浮動小数点数(ローカル設定を視覚化)
printf("%%F = %F <br>", $num1); // 浮動小数点数(ローカル設定を無視)
printf("%%g = %g <br>", $num1); // %e や %f より短い
printf("%%G = %G <br>", $num1); // %E や %f より短い
printf("%%o = %o <br>", $num1); // 8進数
printf("%%s = %s <br>", $num1); // 文字列
printf("%%x = %x <br>", $num1); // 十六進数(小文字)
printf("%%X = %X <br>", $num1); // 十六進数(大文字)
printf("%%+d = %+d <br>", $num1); // 符号記号(正)
printf("%%+d = %+d <br>", $num2); // 符号記号(負)
?>

実行例