money_format -- Форматирует число как денежную величину
Описание
string money_format ( string format, float number )
money_format() форматирует число
number как денежную величину.
Эта функция вызывает функцию strfmon языка C, но позволяет
преобразовать только одно число за один вызов.
Замечание:
Функция money_format() определена только если
в системе присутствует функция strfmon. Например, в Windows она
отсутствует, поэтому money_format() не определена
в Windows.
Описание формата состоит из:
символа %
необязательных флагов
необязательной ширины поля
необязательной точности до запятой
необязательной точности после запятой
обязательного описателя преобразования
Флаги.
Могут быть использованы следующие флаги:
=f
Символ =, за которым следует еще один символ,
задает символ заполнения. По умолчанию пробел.
^
Запрещает группировку символов (определяемую текущей локалью).
+ или (
Задает способ форматирования положительных и отрицательных
значений. При использовании + будут
использоваться аналоги символов + и
- из текущей локали. Если указана
(, отрицательные числа будут заключены в
скобки. По умолчанию +.
!
Подавляет вывод символа валюты.
-
Если этот флаг задан, поля будут выравнены влево, вместо
используемого по умолчанию выравнивания вправо.
Ширина поля.
w
Строка из десятичных цифр, задающая минимальную ширину поля.
Поле будет выравнено вправо, если не указан флаг
-. Значение по умолчанию - 0 (ноль).
Точность до запятой.
#n
Максимальное количество цифр (n),
которое ожидается до запятой. Это обычно используется при выводе
значений одно под другим, чтобы десятичные точки распологались в
одной колонке, при этом используется символ заполнения, если
число цифр меньше n. Если число цифр
больше n, этот параметр игнорируется.
Если группировка не была запрещена флагом ^,
разделители групп будут вставлены перед добавлением символов
заполнения. Разделители групп не вставляются между символами
заполнения, даже если заполнитель - цифра.
Для обеспечения выравнивания, все символы, выводимые до или
после числа, такие как сивол валюты или знак, будут дополнены
пробелами до одинаковой ширины.
Точность после запятой
.
.p
Точка, за которой следует число знаков, выводимых после запятой.
Если значение p рано нулю, десятичная
точка и цифры после нее не будут выводиться.
Если этот параметр отсутствует, число знаков после запятой
определяется текущей локалью. Перед форматированием число
округляется до указанного количества знаков.
Описатель преобразования
.
i
Используется международный денежный формат из текущей локали
(например, для американской локали: 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;
// национальный формат США, с использованием скобок для // отрицательных чисел и 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)