The NumberFormatter class
(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)
Введение
Программы хранят и оперируют числами используя, не зависящее от локали, бинарное представление. Когда же они выводятся на экран или печатаются, они конвертируются в строки в соответствии с требованиями локали. К примеру, число 12345.67 выведется как "12,345.67" в локали US, как "12 345,67" во французской локали и как "12.345,67" в немецкой.
Вызывая методы этого класса, вы можете форматировать числа, денежные единицы и процентные величины в представлении нужной локали. Класс NumberFormatter чуствителен к локали, следовательно вам необходимо будет создавать новый экземпляр класса для каждой локали. Методы NumberFormatter форматируют примитивные типы чисел, такие как "double", и выводят их в специфичном для локали представлении.
Для денежных единиц вы можете использовать тип форматирования денежных единиц, который возвращает строку с отформатированным числом и символом денежной единицы. Естественно NumberFormatter не знает о курсах обмена, так что для всех денежных единиц будет возвращено одно и то же число. К примеру, для числа 9988776.65 результат будет такой:
- 9 988 776,65 € для Франции
- 9.988.776,65 € для Германии
- $9,988,776.65 для США
Для форматирования процентных величин используется свой тип форматирования. При таком форматировании число 0.75 будет выведено как 75%.
Для более сложного форматирования, например для разбора числа, используется форматирование основанное на наборе правил.
Обзор классов
Предопределенные константы
Данные стили используются функцией 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) - Псевдоним для PATTERN_DECIMAL
Данные константы определяют как будут разобраны или отформатированы числа. Их необходимо передавать функциям numfmt_format() и numfmt_parse().
-
NumberFormatter::TYPE_DEFAULT
(int) - Тип определяется типом переменной
-
NumberFormatter::TYPE_INT32
(int) - Форматирование/разбор как 32-битного целого
-
NumberFormatter::TYPE_INT64
(int) - Форматирование/разбор как 64-битного целого
-
NumberFormatter::TYPE_DOUBLE
(int) - Форматирование/разбор как рационального (float)
-
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) - Ширина на которую будет дополнен вывод format().
-
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) - Код денежной единицы ISO.
-
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) - The international currency symbol.
-
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) - Символ NAN (Not-a-number, не-число).
-
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) - Символы дополнения вставляются до суффикса.
Содержание
- NumberFormatter::create — Create a number formatter
- NumberFormatter::formatCurrency — Format a currency value
- NumberFormatter::format — Format a number
- NumberFormatter::getAttribute — Get an attribute
- NumberFormatter::getErrorCode — Get formatter's last error code
- NumberFormatter::getErrorMessage — Get formatter's last error message
- NumberFormatter::getLocale — Get formatter locale
- NumberFormatter::getPattern — Get formatter pattern
- NumberFormatter::getSymbol — Get a symbol value
- NumberFormatter::getTextAttribute — Get a text attribute
- NumberFormatter::parseCurrency — Parse a currency number
- NumberFormatter::parse — Parse a number
- NumberFormatter::setAttribute — Set an attribute
- NumberFormatter::setPattern — Set formatter pattern
- NumberFormatter::setSymbol — Set a symbol value
- NumberFormatter::setTextAttribute — Set a text attribute