PHP マニュアル
前のページ |  | 次のページ

# money_format

(PHP 4 >= 4.3.0, PHP 5)

money_format -- 数値を金額文字列にフォーマットする

## 説明

string money_format ( string format, float number )

money_format() は、`number` をフォーマットして返します。この関数は C のライブラリ関数 strfmon() をラップしたものですが、一度に 変換できる数値がひとつだけであるという点が異なります。

> 注意: システムで strfmon が使用可能な場合のみ money_format() 関数が定義されます。例えば、Windows では strfmon は使用できません。 そのため money_format() は Windows では 定義されていません。

フォーマット指定の書式は以下の順になります。

- `%` 文字

- フラグ(オプション)

- フィールドの幅(オプション)

- 左精度(オプション)

- 右精度(オプション)

- 変換文字(必須)

フラグ. 以下のフラグのうちひとつあるいは複数が使用可能です。

`=``f`

  文字 `=` の後に続く(シングルバイトの)文字 `f` が、数値埋め文字として使用されます。 デフォルトはスペース文字です。

`^`

  グループ化文字(現在のロケールで定義されている)を使用しないように します。

`+` あるいは `(`

  正の数、負の数の書式を指定します。`+` が使用された 場合、`+` および `-` に該当する そのロケールの符号マークが使用されます。`(` が使用された場合、負の数は括弧で囲まれます。何も指定しなかった 場合、デフォルトは `+` です。

`!`

  出力文字列から通貨記号を除きます。

`-`

  指定した場合、すべてのフィールドを左詰め(右側に数値埋め文字が追加 される)にします。デフォルトはこれと反対で、すべてのフィールドを 右詰め(左側に数値埋め文字が追加される)にします。

フィールドの幅.

`w`

  10 進の数値文字列で、フィールドの幅の最小値を指定します。フラグ `-` が使用されていない限り、フィールドは 右詰めとなります。デフォルト値は 0(ゼロ) です。

左精度.

`#``n`

  10 進の基準文字(例: 小数点)より左側の最大の桁数 (`n`) を指定します。これは通常、 `n` より少ない桁数の数値に対して 数値埋め文字を使用することで、出力の桁位置をそろえるために 使用されます。実際の桁数が `n` より 大きい場合、この設定は無視されます。

  `^` フラグでグループ化文字が抑止されていない場合、 (もし存在するなら)数値埋め文字が追加される前にグループ化文字が 挿入されます。グループ化文字は数値埋め文字には適用されません。 たとえ数値埋め文字が数字であったとしても同様です。

  位置あわせを確実にするため、出力中の数値の前後に表れる文字(たとえば 通貨記号や符号など)は、必要に応じて(正の数と負の数の長さをそろえるなど の理由で)スペース文字が付加されることがあります。

右精度 .

`.``p`

  ピリオドに続く数値(`p`) で、10 進の基準文字以降の桁数を指定します。 `p` の値が 0(ゼロ)であった場合、基準文字と それ以降の数値は省略されます。右精度が指定されていない場合、 使用中の現在のロケールからデフォルト値を検出します。 フォーマットされる数値は、フォーマット前にこの桁数に丸められます。

変換文字 .

`i`

  ロケールの国際通貨フォーマット(例: USA ロケールでは USD 1,234.56)によってフォーマットします。

`n`

  ロケールの国内通貨フォーマット(例: de_DE ロケールでは DM1.234,56)によってフォーマットします。

`%`

  `%` 文字を返します。

> 注意: ロケール設定のうち、`LC_MONETARY` カテゴリの内容が この関数の振る舞いに影響します。この関数を使用する前に、 setlocale() で適切なデフォルトロケールを 設定してください。

> フォーマット文字列の前後の文字は、そのまま返されます。

例 1. money_format() の例

この関数の使用法を詳しく説明するために、さまざまな ロケールおよびフォーマット指定を使用します。

`<?php
$number = 1234.56;
// en_US ロケールの国際フォーマットで表示します
setlocale(LC_MONETARY, 'en_US');
echo money_format('%i', $number) . "\n";
// USD 1,234.56
// イタリアの国内フォーマットで小数点以下 2 桁で表示します
setlocale(LC_MONETARY, 'it_IT');
echo money_format('%.2n', $number) . "\n";
// L. 1.234,56
// 負の数を使用します
$number = -1234.5672;
// US の国際フォーマットで、負の数には () を使用して
// 左精度を 10 桁にします
setlocale(LC_MONETARY, 'en_US');
echo money_format('%(#10n', $number) . "\n";
// ($ 1,234.57)
// 上と同じですが、それに加えて右精度を 2 桁
// 数値埋め文字として '*' を使用します
echo money_format('%=*(#10.2n', $number) . "\n";
// ($********1,234.57)
// 左詰め、幅 14 桁、左精度 8 桁、右精度 2 桁、グループ化文字なしで
// de_DE ロケールの国際フォーマットを使用します。
setlocale(LC_MONETARY, 'de_DE');
echo money_format('%=*^-14#8.2i', 1234.56) . "\n";
// DEM 1234,56****
// 変換指定の前後に宣伝文句を追加します
setlocale(LC_MONETARY, 'en_GB');
$fmt = 'The final value is %i (after a 10%% discount)';
echo money_format($fmt, 1234.56) . "\n";
// The final value is GBP 1,234.56 (after a 10% discount)
?>`

setlocale()、 number_format()、sprintf()、 printf() および sscanf() も参照ください。

前のページ | ホーム | 次のページ
metaphone | 上に戻る | nl_langinfo