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

printf

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

PHPマニュアル:printf printf()

printf()関数:概略解説

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

printf()関数:返り値解説

返り値はありません。

printf()関数:引数解説

format書式

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

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

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

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

printf()関数:補足解説

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

参考関数

  • sprintf() ---- フォーマットされた文字列を取得する
  • print() ---- 文字列を出力する
  • echo() ---- 1つ以上の文字列を出力する

フォーマット文字一覧

printf()sprintf()で使用できるフォーマット文字の一覧です。

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

型指定子以外は省略可能ですが、要素番号順に記述しなければならないので注意して下さい。

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

サンプルスクリプト

簡単な利用例

  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
PHP辞典
PHP辞典 PHP5の関数にも対応したリファレンスですが、関数ごとにバージョンが表示されているのでPHP4ユーザにも安心。簡単なサンプルが全ての関数についている事と目的別検索が魅力です。
PHPポケットリファレンス
PHPポケットリファレンス 携帯用でもOKの小さめの本。関数本にありがちな分厚い・重い・見るのがおっくうという欠点をコンパクト化で解消してます。小さいながらも関数の掲載量・内容は共に十分充実しており、関数ごとのサンプルや目的別検索もあります。