*このページは web-dou.com のアーカイブです。(2025年 サイト統合)

PHP関数 sprintf

TOP > PHP  > PHP関数リファレンス  > sprintf

sprintf…フォーマットされた文字列を取得する

文字列 

PHP4.0.6以前のバージョンでは引数の番号付けはサポートされていません。


書式 string sprintf( string format [, mixed args ] )
string sprintf( string 書式 [, mixed フォーマット部分に出 ]
)
引数 format フォーマットする書式
args フォーマット部分と変換して出力する値
返値 フォーマットされた文字列
sprintf()は、引数をフォーマットしてから出力します。第1引数で指定したフォーマット文字列のフォーマット部分(指定子で指定する)に第2引数(以降)で指定した値を当てはめて出力します。


フォーマットされた文字列が返されます。


format 書式
フォーマット文字の指定子を使って、出力フォーマットを指定します。フォーマット文字以外の文字列があった場合はそのまま出力されます。

フォーマット文字が複数ある場合は、1つ目のフォーマットが第2引数、2つ目のフォーマットが第3引数・・・・・というように順番に交換されます。

フォーマット文字列は、0個以上のディレクティブによって構成されます。 ディレクティブにはそのまま結果にそのまま渡される通常の文字(%を除く)と指定子とがあります。各指定子は「%」の後に左の表の要素を1つ以上付けなくてはなりません。

args フォーマット部分に出
フォーマット部分に出力したい値を指定します。


PHP4.0.6以降では、引数の番号付けがサポートされています。この場合、%の後に引数番号、$に加えて実際の指定子という風に記述していきます。このように記述すると引数が順番でなくても番号順に出力されます。



要素番号 指定子 説明 指定できる値 デフォルト
1 パディング指定子 幅の余りを埋める文字を指定 空白もしくは0 空白
2 アラインメント指定子 右寄せまたは左寄せ "-"で左寄せ 右寄せ
3 表示幅指定子 結果を最低何桁にするか ---------- ----
4 精度指定子 小数点以下何桁まで表示するか ---------- ----
5 型指定子 型を指定 % パーセント文字。引数は不要 ----
b 引数を整数として扱い、バイナリの数値として表現。
c 引数を整数として扱い、そのASCII値の文字として表現
d 引数を整数として扱い、10進数として表現
u 引数を整数として扱い、符号なしの10進数として表現
f 引数をdoubleとして扱い、不動小数点数として表現
o 引数を整数として扱い、8進数として表現
s 引数を文字列として扱い、表現
x 引数を整数として扱い、16進数の小文字で表現
X 引数を整数として扱い、16進数の大文字で表現
型指定子以外は省略可能ですが、要素番号順に記述しなければならないので注意して下さい。

printf()ではフォーマットした文字を出力してしまいますが、出力しないでフォーマットだけ行いたい時にはsprintf()などを使います。

簡単な利用例
<?php
//フォーマット部分(ここでは%d)が2つ目の引数と交換されて出力されます。
$score = 95;
printf( "得点は%d点です", $score );
?>
出力結果
得点は95点です
値が複数ある場合の処理
<?php
$year = 2004;
$month = 5;
$day = 4;

//「2004年05月04日」と出力したい
printf("今日は%04d年%02d月%02d日です。", $year, $month, $day );
?>
出力結果
今日は2004年05月04日です。
引数の番号付け(PHP4.0.6以降対応)
<?php
$year = 2004;
$month = 5;
$day = 15;

$format = "日本語では%04d年%02d月%02d日<br />";
printf($format, $year, $month, $day);

// 値が複数ある場合、引数が順番で並んでいるとは限らない。
// そこで引数に番号をつけて順番を指定してみる。
// %の後に何番目の引数と交換するかを指定する。
// この場合は「%引数番号」の後に「$」を付けて実際のフォーマット指定をする

$month = "May"; // 月$monthの定義しなおし

//「"」ダブルクォーテーションの文字列なので「$」をエスケープしている。
$format = "英語なら・・・・%2\$s %3\$02d %1\$04d";
printf($format, $year, $month, $day);
?>
出力結果
日本語では2004年05月15日
英語なら・・・・May 15 2004




索引

A  B  C  D  E  F  G  H  I  J  K  L  M  N 
O  P  Q  R  S  T  U  V  W  X  Y  X