PHPでは、文字列を操作することがよくあります。そのときに便利なのが printf()
関数です。
printf() 関数
printf()
は、文字列の中に変数を埋め込みできます。
$format = '<span>%s</span>。';
$message = 'こんにちは';
printf( $format, $message ); // <span>こんにちは</span>。
のように、書式(フォーマット)を指定します。%s
のところに、変数(↑の例だと$message
)が埋め込まれます。
埋め込む変数の数は複数でも構いません。↓の例のように書くと、複数の変数が順に%s
に埋め込まれます。
$format = '<span>%s</span>さん、<span>%s</span>。';
$name = '佐藤';
$message = 'こんにちは';
printf( $format, $name, $message ); // <span>佐藤</span>さん、<span>こんにちは</span>。
printf()とsprintf()
printf()
とsprintf()
は文字列に変数を埋め込む働きは同じです。一方で、printf()
は画面に出力する、sprintf()
は値を返す、という違いがあります。
埋め込む順序
変数の順番は明示的に指定可能です。↓の例のように %1$s
、%2$s
、のように書くと、%1$s
には最初の引数が埋め込まれ、%2$s
には二番目の引数が埋め込まれます。
$format = '<span>%2$s</span>さん、<span>%1$s</span>。';
$message = 'こんにちは';
$name = '佐藤';
printf( $format, $message, $name ); // <span>佐藤</span>さん、<span>こんにちは</span>。
%1$s
、%2$s
といった番号付のものを複数回使った場合、それぞれに変数が埋め込まれます。↓の例だと、佐藤
を複数回埋め込みできます。
$format = '<span>%2$s</span>さん、<span>%1$s</span>。<span>%2$s</span>さんへのお知らせがあります。';
$message = 'こんにちは';
$name = '佐藤';
printf( $format, $message, $name ); // <span>佐藤</span>さん、<span>こんにちは</span>。<span>佐藤</span>さんへのお知らせがあります。
数字を埋め込む
埋め込む変数が文字列の場合は%s
を使いましたが、数字(整数)の場合は%d
を使います。
$format = '<span>%s</span>さんへのお知らせが<span>%d</span>件あります。';
$name = '佐藤';
$number = 2;
printf( $format, $name, $number ); // <span>佐藤</span>さんへのお知らせが<span>2</span>件あります。
%d
も、順番を指定できます。
$format = '<span>%1$s</span>さんへのお知らせが<span>%2$d</span>件あります。';
$name = '佐藤';
$number = 2;
printf( $format, $name, $number ); // <span>佐藤</span>さんへのお知らせが<span>2</span>件あります。
数字の最低桁数を指定する
%d
には、桁数を指定する機能があります。%02d
のように、0+桁数で指定します。この例だと2桁を指定します。(指定桁数以上の場合はそのまま、指定桁数より少なければ先頭に0が入ります。)
$format = '今日は<span>%02d</span>月<span>%02d</span>日です。';
$month = 5;
$day = 13;
printf( $format, $month, $day ); // 今日は<span>05</span>月<span>13</span>日です。
順番も桁数も指定する場合は %1$02d
のように書きます。
$format = '今日は<span>%1$02d</span>月<span>%2$02d</span>日です。';
$month = 5;
$day = 3;
printf( $format, $month, $day ); // 今日は<span>05</span>月<span>03</span>日です。
小数を取り得る場合は f
数字が整数とは限らず、小数も可能性がある場合は%f
を使います。
$format = '平均値は<span>%f</span>です。';
$average = 5.2;
printf( $format, $average ); // 平均値は<span>5.200000</span>です。
桁数を指定する場合は、%02.3f
のように書きます。.
の前に全体の桁数、.
の後に小数部分の桁数を書きます。
$format = '平均値は<span>%05.2f</span>です。';
$average = 5.2;
printf( $format, $average ); // 平均値は<span>05.20</span>です。
順番も桁数も指定する場合は、%1$02.3f
のように書きます。
$format = '合計は<span>%2$02.1f</span>、平均値は<span>%1$02.3f</span>です。';
$sum = 288;
$average = 5.2;
printf( $format, $average, $sum ); // 合計は<span>288.0</span>、平均値は<span>5.200</span>です。
更新日: