sprintf
そふぃのPHP入門 >> PHP関数リファレンス >> 文字列関数 >> sprintf

sprintf

解説 フォーマットされた文字列を取得する
書式 string sprintf( string format [, mixed args ] )
string sprintf( string 書式 [, mixed フォーマット部分に出 ] )
引数 format フォーマットする書式
args フォーマット部分と変換して出力する値
返値 フォーマットされた文字列

PHPマニュアル:sprintf sprintf()

sprintf()関数:概略解説

sprintf()は引数をフォーマットしてから出力します。第1引数で指定したフォーマット文字列のフォーマット部分(指定子で指定する)に第2引数(以降)で指定した値を当てはめて出力します。

sprintf()関数:返り値解説

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

sprintf()関数:引数解説

format書式

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

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

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

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

sprintf()関数:補足解説

PHP4.0.6以降では、引数の番号付けがサポートされています。この場合、%の後に引数番号、$に加えて実際の指定子という風に記述していきます。このように記述すると引数が順番でなくても番号順に出力されます。 {include file='parts/goto.tpl' goto=$goto[0]} PHP4.0.6以前のバージョンでは引数の番号付けはサポートされていません。

参考関数

  • printf() ---- 文字列をフォーマットして出力する
  • print() ---- 文字列を出力する
  • echo() ---- 1つ以上の文字列を出力する

サンプルスクリプト

簡単な利用例

  1. <?php
  2. //フォーマット部分(ここでは%d)が2つ目の引数と交換されて出力されます。
  3. $score = 95;
  4. printf( "得点は%d点です", $score );
  5. ?>

出力結果

得点は95点です

値が複数ある場合の処理

  1. <?php
  2. $year = 2004;
  3. $month = 5;
  4. $day = 4;
  5.  
  6. //「2004年05月04日」と出力したい
  7. printf("今日は%04d年%02d月%02d日です。", $year, $month, $day );
  8. ?>

出力結果

今日は2004年05月04日です。

引数の番号付け(PHP4.0.6以降対応)

  1. <?php
  2. $year = 2004;
  3. $month = 5;
  4. $day = 15;
  5.  
  6. $format = "日本語では%04d年%02d月%02d日<br />";
  7. printf($format, $year, $month, $day);
  8.  
  9. // 値が複数ある場合、引数が順番で並んでいるとは限らない。
  10. // そこで引数に番号をつけて順番を指定してみる。
  11. // %の後に何番目の引数と交換するかを指定する。
  12. // この場合は「%引数番号」の後に「$」を付けて実際のフォーマット指定をする
  13.  
  14. $month = "May"; // 月$monthの定義しなおし
  15.  
  16. //「"」ダブルクォーテーションの文字列なので「$」をエスケープしている。
  17. $format = "英語なら・・・・%2\$s %3\$02d %1\$04d";
  18. printf($format, $year, $month, $day);
  19. ?>

出力結果

日本語では2004年05月15日
英語なら・・・・May 15 2004