(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)
プログラムで数値を保存したり操作したりする際には、 ロケールに依存しないバイナリ表現を使用します。 数値を表示するときに、ロケールにあわせた文字列形式に変換します。 たとえば 12345.67 という数値の表記はアメリカでは "12,345.67"、 フランスでは "12 345,67"、そしてドイツでは "12.345,67" となります。
NumberFormatter クラスのメソッドを実行すると、 数値や通貨、パーセンテージなどの値をロケールに応じた形式にフォーマットすることができます。 NumberFormatter はロケールを考慮した処理を行うので、 ロケールごとに別の NumberFormatter を用意する必要があります。 NumberFormatter のメソッドは、浮動小数点数値のような数値を ロケールにあわせた文字列に変換します。
通貨の場合は、通貨用の書式を使用してフォーマッタを作成します。 これは、ロケールにあわせて数値を適切な書式にして通貨記号をつけた文字列を返します。 もちろん、NumberFormatter クラスは為替レートの変換などは考慮しません。 指定した通貨にかかわらず、出力される数値は同じものとなります。 つまり、ロケールによって同じ数値が違う額を表すことになるということです。 9988776.65 という数値を指定したときの結果は次のようになります。
パーセンテージをフォーマットするには、 パーセンテージ用の書式を指定したフォーマッタを作成します。 これを使用すると、たとえば 0.75 のような小数が 75% と表示されるようになります。
spelled-out numbers のような複雑な書式を設定する場合は、 ルールベースの数値フォーマッタを使用します。
これらのスタイルは numfmt_create() で使用するもので、フォーマッタの形式を定義します。
NumberFormatter::PATTERN_DECIMAL
int
NumberFormatter::DECIMAL
int
NumberFormatter::CURRENCY
int
NumberFormatter::PERCENT
int
NumberFormatter::SCIENTIFIC
int
NumberFormatter::SPELLOUT
int
NumberFormatter::ORDINAL
int
NumberFormatter::DURATION
int
NumberFormatter::PATTERN_RULEBASED
int
NumberFormatter::CURRENCY_ACCOUNTING
int
-$3.00
ではなく、($3.00)
になります。
PHP 7.4.1 と ICU 53 から利用可能です。
NumberFormatter::DEFAULT_STYLE
int
NumberFormatter::IGNORE
int
これらの定数は、数値のパースやフォーマットの方法を定義します。 numfmt_format() や numfmt_parse() の引数として使用します。
NumberFormatter::TYPE_DEFAULT
int
NumberFormatter::TYPE_INT32
int
NumberFormatter::TYPE_INT64
int
NumberFormatter::TYPE_DOUBLE
int
NumberFormatter::TYPE_CURRENCY
int
numfmt_get_attribute() および numfmt_set_attribute() で使用する数値フォーマット属性です。
NumberFormatter::PARSE_INT_ONLY
int
NumberFormatter::GROUPING_USED
int
NumberFormatter::DECIMAL_ALWAYS_SHOWN
int
NumberFormatter::MAX_INTEGER_DIGITS
int
NumberFormatter::MIN_INTEGER_DIGITS
int
NumberFormatter::INTEGER_DIGITS
int
NumberFormatter::MAX_FRACTION_DIGITS
int
NumberFormatter::MIN_FRACTION_DIGITS
int
NumberFormatter::FRACTION_DIGITS
int
NumberFormatter::MULTIPLIER
int
NumberFormatter::GROUPING_SIZE
int
NumberFormatter::ROUNDING_MODE
int
NumberFormatter::ROUNDING_INCREMENT
int
NumberFormatter::FORMAT_WIDTH
int
NumberFormatter::PADDING_POSITION
int
NumberFormatter::SECONDARY_GROUPING_SIZE
int
NumberFormatter::SIGNIFICANT_DIGITS_USED
int
NumberFormatter::MIN_SIGNIFICANT_DIGITS
int
NumberFormatter::MAX_SIGNIFICANT_DIGITS
int
NumberFormatter::LENIENT_PARSE
int
numfmt_get_text_attribute() および numfmt_set_text_attribute() で使用する数値フォーマットテキスト属性です。
NumberFormatter::POSITIVE_PREFIX
int
NumberFormatter::POSITIVE_SUFFIX
int
NumberFormatter::NEGATIVE_PREFIX
int
NumberFormatter::NEGATIVE_SUFFIX
int
NumberFormatter::PADDING_CHARACTER
int
NumberFormatter::CURRENCY_CODE
int
NumberFormatter::DEFAULT_RULESET
int
NumberFormatter::PUBLIC_RULESETS
int
numfmt_get_symbol() および numfmt_set_symbol() で使用する数値フォーマット記号です。
NumberFormatter::DECIMAL_SEPARATOR_SYMBOL
int
NumberFormatter::GROUPING_SEPARATOR_SYMBOL
int
NumberFormatter::PATTERN_SEPARATOR_SYMBOL
int
NumberFormatter::PERCENT_SYMBOL
int
NumberFormatter::ZERO_DIGIT_SYMBOL
int
NumberFormatter::DIGIT_SYMBOL
int
NumberFormatter::MINUS_SIGN_SYMBOL
int
NumberFormatter::PLUS_SIGN_SYMBOL
int
NumberFormatter::CURRENCY_SYMBOL
int
NumberFormatter::INTL_CURRENCY_SYMBOL
int
NumberFormatter::MONETARY_SEPARATOR_SYMBOL
int
NumberFormatter::EXPONENTIAL_SYMBOL
int
NumberFormatter::PERMILL_SYMBOL
int
NumberFormatter::PAD_ESCAPE_SYMBOL
int
NumberFormatter::INFINITY_SYMBOL
int
NumberFormatter::NAN_SYMBOL
int
NumberFormatter::SIGNIFICANT_DIGIT_SYMBOL
int
NumberFormatter::MONETARY_GROUPING_SEPARATOR_SYMBOL
int
numfmt_get_attribute() および
numfmt_set_attribute() で、
NumberFormatter::ROUNDING_MODE
属性に使用する丸めモードの値です。
NumberFormatter::ROUND_CEILING
int
NumberFormatter::ROUND_DOWN
int
NumberFormatter::ROUND_FLOOR
int
NumberFormatter::ROUND_HALFDOWN
int
NumberFormatter::ROUND_HALFEVEN
int
NumberFormatter::ROUND_HALFUP
int
NumberFormatter::ROUND_UP
int
numfmt_get_attribute() および
numfmt_set_attribute() で、
NumberFormatter::PADDING_POSITION
属性に使用するパディング位置の値です。
NumberFormatter::PAD_AFTER_PREFIX
int
NumberFormatter::PAD_AFTER_SUFFIX
int
NumberFormatter::PAD_BEFORE_PREFIX
int
NumberFormatter::PAD_BEFORE_SUFFIX
int
バージョン | 説明 |
---|---|
8.4.0 | クラス定数が型付けされました。 |