PHPでSPrintF、VPrintF、PrintF、Number_Format関数で整形(フォーマット) ~PHPサンプルソースコード集
PHPで変数などの値を整形(フォーマット)するにはSPrintF関数や、VPrintF関数、PrintF関数、Number_Format関数を使う方法があります。
number_format関数を使った場合は
関数名 | 出力先 | 例 |
---|---|---|
sprintf(フォーマット,値,値,・・・) | 戻り値 |
echo sprintf("%9.3f",11.2);
11.200 |
vprintf(フォーマット,配列) | 標準出力(画面) |
vprintf("%9.3f",[11.2]);11.200 |
printf(フォーマット,値,値,・・・) | 標準出力(画面) |
printf("%9.3f",11.2);
11.200 |
number_format(値 [,小数点以下桁数]) 1000単位でカンマ区切りを行い、 小数点以下桁数に丸める(四捨五入) |
戻り値 |
(例) echo number_format(1000.05); 1,000(例) echo number_format(1000.05, 1); 1,000.1 |
フォーマットについて
SPrintF関数や、VPrintF関数、PrintF関数の第1引数のフォーマットは以下の構文です。
"%[argnum$][flags][width][.precision]specifier"
- argnum$(引数の番号[省略可能])
-
フォーマットに使用する引数の番号(1~引数の数まで)を指定できます。
(例)echo sprintf("%2$9.3f, %1$9.3f", 1.2345, 2.3456, 3.4567);
2.346, 1.234 - flag[省略可能]
-
左寄せや指定幅に対して埋める文字を指定したりできます。
フラグ 説明 - 左寄せにします。省略すると右寄せになります。
(例)echo sprintf("%-'_9.3f", 1.2345);
1.234____+ 正の数値の左に「+」を付けます。省略すると負の数値だけ「-」が付きます (例) echo sprintf("%+9.3f", 1.2345);
+1.234半角スペース 指定したwidth(幅)に埋め切れない箇所を半角スペースで埋めます。
これがデフォルトで省略可能です。
(例)echo sprintf("%9.3f", 1.2345);
1.234'任意の1文字 指定したwidth(幅)に埋め切れない箇所を指定した文字で埋めます。
省略すると半角スペースになります。
(例)echo sprintf("%-+'_14.3f", 1.2345);
+1.234___ - width(最小文字数の指定[省略可能])
-
値を(最小で)何文字で出力するかを指定します。小数値の場合は小数点も文字数に含まれます。
(例)echo sprintf("%'_14.3f", 1.2345);
(例)
_________1.234echo sprintf("%'_14.14f", 1.2345678901234);
1.23456789012340 - .precision(小数以下の文字数の指定[省略可能])
-
小数以下何文字表示するかを指定します。
(例)echo sprintf("%.20f", 1.2345);
(例)
1.23449999999999993072echo sprintf("%20.3f", 1.23456);
1.235 - specifier(指定子)
-
指定子 説明 % パーセント指定子。パーセント「%」文字を表示するだけです。
(例)echo sprintf("%%", 1.2345);
%b(2進数表示) 引数は整数として扱われ2進数として表現されます。
(例)echo sprintf("%b", 21.2345);
10101c(ASCII文字表現) 引数は整数として扱われ、指定した値のASCII文字が表現されます。
(例)10進数の77[16進数の 0x4B]は文字の「M」echo sprintf("%c", 77);
Md(整数) 引数は整数として扱われ、符号付10進数として表現されます。
(例)echo sprintf("%d足す%dは%dです", 21, 24, 21+24);
(例)
21足す24は45ですecho sprintf("%2$+'08d %1$8d", 11, 22);
+0000022 11e(指数表現) 引数は指数表現されます。
(例)echo sprintf("%e足す%eは%eです", 210, 0.12345, 210+0.12345);
2.100000e+2足す1.234500e-1は2.101234e+2ですE(指数表現) 引数は指数表現されます。
(例)echo sprintf("%E足す%Eは%Eです", 210, 0.12345, 210+0.12345);
2.100000E+2足す1.234500E-1は2.101234E+2ですf(小数) 引数は小数として扱われます。(ロケールを考慮)
(例)/* ロケールをフランス語に設定 */
setlocale(LC_ALL, 'fr_FR.UTF8', 'fr.UTF8', 'fr_FR.UTF-8', 'fr.UTF-8');
echo sprintf("%f足す%fは%fです", 0.1, 0.2, 0.1+0.2);
0,100000足す0,200000は0,300000です
(↑小数点がドットではなくカンマ「,」になっている)F(小数) 引数は小数として扱われます。(ロケールを考慮しない)
(例)/* ロケールをフランス語に設定 */
setlocale(LC_ALL, 'fr_FR.UTF8', 'fr.UTF8', 'fr_FR.UTF-8', 'fr.UTF-8');
echo sprintf("%F足す%Fは%Fです", 0.1, 0.2, 0.1+0.2);
0.100000足す0.200000は0.300000です
(↑小数点がドットで表現されている)o(8進数) 引数は整数として扱われ8進数表現されます
(例)echo sprintf("%o", 256);
400x(16進数小文字) 引数は整数として扱われ16進数(小文字)表現されます
(例)echo sprintf("%x", 255);
ffX(16進数大文字) 引数は整数として扱われ16進数(大文字)表現されます
(例)echo sprintf("%X", 255);
FFs(文字列) 引数は文字列として扱われ文字列として表現されます
(例)echo sprintf("あいうえお%s", "かきくけこ");
あいうえおかきくけこ