PHP sprintf() 関数

百分号(%)符号を引数として渡される変数に置き換えてください:

<?php
$number = 2;
$str = "Shanghai";
$txt = sprintf("There are 쥕lion cars in %s.", $number, $str);
echo $txt;
?>

実行例

定義と使用法

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

arg1arg2++ パラメータがメイン文字列の%符号の場所に挿入されます。この関数は順次実行されます。最初の%符号の場所に arg1、第二の%符号の場所に arg2、そのように順次。

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

ヒント:関連関数:printf()、vprintf()、vsprintf()、fprintf()およびvfprintf()

文法

sprintf(format,arg1,arg2,arg++)
パラメータ 説明
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 - 小文字の16進数
  • %X - 大文字の16進数

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

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

注釈:上記のフォーマット値を使用する場合、それらは上記の順序で使用する必要があります。

arg1 必須。以下に挿入する format 文字列の第一の % 符号の場所のパラメータ。
arg2 オプション。以下に挿入する format 文字列の第二の % 符号の場所のパラメータ。
arg++ オプション。以下に挿入する format 文字列の第三、四の % 符号の場所のパラメータ。

技術的な詳細

返り値: フォーマットされた文字列を返す。
PHPバージョン: 4+

さらに例

例 1

フォーマット値 %fの使用:

<?php
$number = 123;
$txt = sprintf("%f",$number);
echo $txt;
?>

実行例

例 2

プレースホルダーの使用:

<?php
$number = 123;
$txt = sprintf("2桁小数:%1\$.2f
<br>小数点なし:%1\$u",$number);
echo $txt;
?>

実行例

例 3

すべての可能なフォーマット値のデモンストレーション:

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

実行例

例 4

文字列記号のデモンストレーション:

<?php
$str1 = "Hello";
$str2 = "Hello world!";
echo sprintf("[%s]",$str1)."<br>";
echo sprintf("[%8s]",$str1)."<br>";
echo sprintf("[%-8s]",$str1)."<br>";
echo sprintf("[%08s]",$str1)."<br>";
echo sprintf("[%'*8s]",$str1)."<br>";
echo sprintf("[%8.8s]",$str2)."<br>";
?>

実行例