このサイトではアフィリエイト広告(Amazonアソシエイトを含む)を利用しています。

文字列に変数を埋め込むprintf()関数

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>です。

更新日:

↑このページへのリンク

フリーランスの営業力アップに最適!ホームページを営業マンにする自動見積もりフォーム「マイ見積