PHP sprintf()関数

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

例

パーセント記号(%)を、引数として渡される変数に置き換える:

<?php $number = 9; $str = "サンプル"; $txt = sprintf("%s 毎日 %u 万人がアクセスしています!", $str, $number); echo $txt; ?>

実行出力結果は次のとおりです:

サンプル 每天有 9 万人在访问!

定義と用法

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

arg1、arg2、++ 引数は、メイン文字列のパーセント記号(%)の位置に挿入されます。この関数は段階的に実行されます。最初の % 記号には arg1 が挿入され、2番目の % 記号には 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)
  • %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] (小数桁数または最大文字列長を指定します)

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

arg1 必須です。format 文字列の最初の % 記号に挿入する引数を指定します。
arg2 オプションです。format 文字列の2番目の % 記号に挿入する引数を指定します。
arg++ オプションです。format 文字列の3番目、4番目などの % 記号に挿入する引数を指定します。

技術詳細

戻り値: フォーマット済みの文字列を返します。
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 = %u",$num1)."<br>"; //符号なし10進数(正) echo sprintf("%%u = %u",$num2)."<br>"; //符号なし10進数(負) echo sprintf("%%f = %f",$num1)."<br>"; //浮動小数点数(ロケール設定による) echo sprintf("%%F = %F",$num1)."<br>"; //浮動小数点数(ロケール設定に依存しない) echo sprintf("%%g = %g",$num1)."<br>"; //%e と %f のより短い方 echo sprintf("%%G = %G",$num1)."<br>"; //%E と %f のより短い方 echo sprintf("%%o = %o",$num1)."<br>"; //8進数 echo sprintf("%%s = %s",$num1)."<br>"; //文字列 echo sprintf("%%x = %x",$num1)."<br>"; //16進数(小文字) echo sprintf("%%X = %X",$num1)."<br>"; //16進数(大文字) 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>"; ?>

例を実行 »


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