PHP vsprintf()関数

PHP String リファレンスマニュアル

例

フォーマット文字列を変数に書き込む:

<?php
$number = 9;
$str = "Beijing";
$txt = vsprintf("There are %u million bicycles in %s.",array($number,$str));
echo $txt;
?>

例を実行 »

定義と用法

vsprintf() 関数は、フォーマット文字列を変数に書き込みます。

sprintf() とは異なり、vsprintf() の引数は配列内にあります。配列要素はメイン文字列のパーセント記号(%)の位置に挿入されます。この関数は段階的に実行されます。最初の % 記号に最初の配列要素が挿入され、2 番目の % 記号に 2 番目の配列要素が挿入され、以下同様に続きます。

注釈:% 記号が arg パラメータより多い場合は、プレースホルダを使用する必要があります。プレースホルダは % 記号の後に挿入され、数字と "\$" で構成されます。例 2 を参照してください。

ヒント:関連関数:fprintf()、 vfprintf()、 printf()、 sprintf()とvprintf()


構文

vsprintf(format,argarray)

パラメータ 説明
format 必須。文字列と、その中の変数をフォーマットする方法を指定します。

可能なフォーマット値:

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

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

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

注釈:上記のフォーマット値を複数使用する場合は、上記の順序で使用する必要があり、順序を変えることはできません。

argarray 必須。format 文字列の % 記号に挿入される引数を含む配列。

技術詳細

戻り値: 配列値をフォーマット文字列として返します。
PHP バージョン: 4.1.0+


その他の例

例 1

フォーマット値 %f を使用する:

<?php
$num1 = 123;
$num2 = 456;
$txt = vsprintf("%f%f",array($num1,$num2));
echo $txt;
?>

例を実行 »

例 2

プレースホルダを使用する:

<?php
$number = 123;
$txt = vsprintf("With 2 decimals: %1$.2f
<br>With no decimals: %1$u",array($number));
echo $txt;
?>

例を実行 »

例 3

sprintf() を使用して、可能なすべてのフォーマット値を示します:

<?php
$num1 = 123456789;
$num2 = -123456789;
$char = 50; // The ASCII Character 50 is 2

// Note: The format value "%%" returns a percent sign
echo sprintf("%%b = %b",$num1)."<br>"; // Binary number
echo sprintf("%%c = %c",$char)."<br>"; // The ASCII Character
echo sprintf("%%d = %d",$num1)."<br>"; // Signed decimal number
echo sprintf("%%d = %d",$num2)."<br>"; // Signed decimal number
echo sprintf("%%e = %e",$num1)."<br>"; // Scientific notation (lowercase)
echo sprintf("%%E = %E",$num1)."<br>"; // Scientific notation (uppercase)
echo sprintf("%%u = %u",$num1)."<br>"; // Unsigned decimal number (positive)
echo sprintf("%%u = %u",$num2)."<br>"; // Unsigned decimal number (negative)
echo sprintf("%%f = %f",$num1)."<br>"; // Floating-point number (local settings aware)
echo sprintf("%%F = %F",$num1)."<br>"; // Floating-point number (not local sett aware)
echo sprintf("%%g = %g",$num1)."<br>"; // Shorter of %e and %f
echo sprintf("%%G = %G",$num1)."<br>"; // Shorter of %E and %f
echo sprintf("%%o = %o",$num1)."<br>"; // Octal number
echo sprintf("%%s = %s",$num1)."<br>"; // String
echo sprintf("%%x = %x",$num1)."<br>"; // Hexadecimal number (lowercase)
echo sprintf("%%X = %X",$num1)."<br>"; // Hexadecimal number (uppercase)
echo sprintf("%%+d = %+d",$num1)."<br>"; // Sign specifier (positive)
echo sprintf("%%+d = %+d",$num2)."<br>"; // Sign specifier (negative)
?>

例を実行 »

例 4

文字列指定子のデモ:

<?php
$str1 = "Hello";
$str2 = "Hello world!";

echo vsprintf("[%s]",array($str1))."<br>";
echo vsprintf("[%8s]",array($str1))."<br>";
echo vsprintf("[%-8s]",array($str1))."<br>";
echo vsprintf("[%08s]",array($str1))."<br>";
echo vsprintf("[%'*8s]",array($str1))."<br>";
echo vsprintf("[%8.8s]",array($str2))."<br>";
?>

例を実行 »


PHP String リファレンスマニュアル その他の拡張