vprintf( string $format, array $args )

vprintf( string $format, array $args )は、フォーマット「$format」に基づき生成した文字列を出力する組み込み関数。

printf()関数と似ているが、フォーマットしたいデータを、可変長引数ではなく、配列で指定する点が異なる。

定義

整数型 vprintf( 文字列型 $format, 配列型 $args );

パラメータ

文字列型 $format

フォーマット。

配列型 $args

オプション。

フォーマットしたいデータを格納した配列。

フォーマット

% 位置指定子 符号指定子 パディング指定子 アラインメント指定子 表示幅指定子 精度指定子 型指定子

%の後に、空白は入れずに、指定子を続けて記述する。

位置指定子

オプション。

フォーマットしたいデータが複数あり、順番を入れ替えたい場合に使う。

n番目のデータを、n$とする。1番目のデータは、1$。5番目のデータは、5$となる。

変換指定子

下記の変換指定子を、1つ以上続けて記述する。

符号指定子

オプション。

何も指定しないと、負の数にだけ、符号を付ける。正の数には、プラス符号「+」を付けない。負の数には、マイナス符号「-」を付ける。

+を指定すると、正の数にも、符号を付ける。正の数には、プラス符号「+」を付け、負の数には、マイナス符号「-」を付ける。

パディング指定子

オプション。

「表示幅指定子」に指定した長さになるまで、どんな文字で埋めるかを指定する。

  • 半角空白: 半角空白で埋める。初期設定値。
  • 0: 0で埋める。ゼロパディング。
  • '任意の一文字: 単一引用符'に続く「任意の一文字」で埋める。
アラインメント指定子

オプション。

左寄せか、右寄せかを指定する。

初期設定値は、右寄せ。

-を指定すると、左寄せ。

表示幅指定子

オプション。

最低何桁にするかを、数字で指定。

精度指定子

オプション。

数字で指定。

浮動小数点数の場合、小数点以下の小数部を、「精度指定子」に指定した数の位まで表示する。

文字列の場合、「精度指定子」に指定した文字数を超える文字を切り捨てる。

型指定子

オプション。

引数の「多様な型 $args」や「多様な型 $…」を、何のデータ型で扱うかを指定する。

  • %: パーセント記号。
  • b: 引数を整数として扱い、2進数に変換。
  • c: 引数を整数として扱い、ASCII値の文字として表現。
  • d: 引数を整数として扱い、10進数に変換。
  • e: 引数を科学記法として扱う。小文字を使う。
  • E: 引数を科学記法として扱う。大文字を使う。
  • u: 引数を整数として扱い、符号がない10進数に変換。
  • f: 引数をdoubleとして扱い、浮動小数点数として表現。
  • F: 引数をfloatとして扱い、浮動小数点数として表現。
  • g: %e および %f の短縮形。
  • G: %E および %f の短縮形。
  • o: 引数を整数として扱い、 8進数に変換。
  • s: 引数を文字列として扱う。
  • x: 引数を整数として扱い、16進数(小文字)に変換。
  • X: 引数を整数として扱い、16進数(大文字)に変換。

構文

フォーマット済み文字列を出力

vprintf( フォーマット, フォーマットしたいデータを格納した配列 );

「フォーマット」に基づき生成した文字列を出力する。

戻り値

出力した文字列の長さを返す。

サンプル

日付を、フォーマット

<?php
$varYear = 2012;
$varMonth = 7;
$varDay = 3;
$varArray = array( $varYear, $varMonth, $varDay );
$format = '%04d-%02d-%02d';
vprintf( "<p>年月日(YYYY-MM-DD): $format</p>", $varArray );
$format = '%2$02d-%3$02d-%1$04d';
vprintf( "<p>月日年(MM-DD-YYYY): $format</p>", $varArray );
$format = '%3$02d-%2$02d-%1$04d';
vprintf( "<p>日月年(DD-MM-YYYY): $format</p>", $varArray );
$format = '%04d年%02d月%02d日';
vprintf( "<p>年月日(YYYY年MM月DD日): $format</p>", $varArray );
$format = '%3$04d年%1$02d月%2$02d日';
vprintf( "<p>年月日(YYYY年MM月DD日): $format</p>", explode( '-', '07-03-2012' ) );
?>

↓↓↓出力結果↓↓↓

年月日(YYYY-MM-DD): 2012-07-03
月日年(MM-DD-YYYY): 07-03-2012
日月年(DD-MM-YYYY): 03-07-2012
年月日(YYYY年MM月DD日): 2012年07月03日
年月日(YYYY年MM月DD日): 2012年07月03日

複数の整数を、フォーマット

<?php
$varArray = array( 1, 2, 3 );
$varSum = array_sum( $varArray );
$format = '%d+%d+%d=' . $varSum;
vprintf( "<p>$format</p>", $varArray );
$format = '%1$d+%2$d+%3$d=' . $varSum;
vprintf( "<p>$format</p>", $varArray );
$format = '%3$d+%2$d+%1$d=' . $varSum;
vprintf( "<p>$format</p>", $varArray );
?>

↓↓↓出力結果↓↓↓

1+2+3=6
1+2+3=6
3+2+1=6

出力したフォーマット済みの文字列の長さを取得

<?php
$varYear = 2012;
$varMonth = 7;
$varDay = 3;
$varArray = array( $varYear, $varMonth, $varDay );
$format = '%04d-%02d-%02d';
$varCount = vprintf( "$format", $varArray );
echo "<br />文字列の長さは、{$varCount}";
?>

↓↓↓出力結果↓↓↓

2012-07-03
文字列の長さは、10

スポンサード リンク

カテゴリー: PHP, フォーマット, 出力, 文字列, 組み込み関数 タグ: パーマリンク