Функция PHP money_format

string money_format ( string format, float number )

Функция money_format форматирует число number как денежную величину. Эта функция вызывает функцию strfmon языка C, но позволяет преобразовать только одно число за один вызов.

Замечание: Функция money_format определена только если в системе присутствует функция strfmon. Например, в Windows она отсутствует, поэтому money_format не определена в Windows.

Описание формата состоит из:

Могут быть использованы следующие флаги:  

Ширина поля.  

w

Строка из десятичных цифр, задающая минимальную ширину поля. Поле будет выравнено вправо, если не указан флаг -. Значение по умолчанию - 0 (ноль). 

Точность до запятой.  

#n

Максимальное количество цифр (n), которое ожидается до запятой. Это обычно используется при выводе значений одно под другим, чтобы десятичные точки распологались в одной колонке, при этом используется символ заполнения, если число цифр меньше n. Если число цифр больше n, этот параметр игнорируется.

Если группировка не была запрещена флагом ae_, разделители групп будут вставлены перед добавлением символов заполнения. Разделители групп не вставляются между символами заполнения, даже если заполнитель - цифра.

Для обеспечения выравнивания, все символы, выводимые до или после числа, такие как сивол валюты или знак, будут дополнены пробелами до одинаковой ширины. 

Точность после запятой .  

.p

Точка, за которой следует число знаков, выводимых после запятой. Если значение p рано нулю, десятичная точка и цифры после нее не будут выводиться. Если этот параметр отсутствует, число знаков после запятой определяется текущей локалью. Перед форматированием число округляется до указанного количества знаков. 

Описатель преобразования .  

Замечание: На работу этой функции влияет установка категории LC_MONETARY текущей локали. Перед использованием этой функции установите нужную локаль с помощью setlocale().

Символы перед и после описания формата возвращаются без изменений.

Пример использования money_format

 

<?php
    $number = 1234.56;

   // международный формат в локали en_US
   setlocale(LC_MONETARY, 'en_US');
   echo money_format('%i', $number) . " ";  
   // USD 1,234.56
   // Итальянский национальный формат с 2 знаками после запятой

   setlocale(LC_MONETARY, 'it_IT');
   echo money_format('%.2n', $number) . " ";
   // L. 1.234,56
   // Использование отрицательных чисел
   $number = -1234.5672;

   // национальный формат США, с использованием скобок для
   // отрицательных чисел и 10 знаков до запятой
   setlocale(LC_MONETARY, 'en_US');
   echo money_format('%(#10n', $number) . " ";
   // ($        1,234.57)

    // подобно предыдущему, но с  добавлением 2 знаков после запятой
   // и '*' в качестве символа заполнения
   echo money_format('%=*(#10.2n', $number) . " ";
   // ($********1,234.57)
    
   // Выравнивание влево, ширина 14 знаков, 8 знаков дозапятой,
   // 2 знака после запятой, без разбиения на группы
   // с использованием  международного формата в локали de_DE.
   setlocale(LC_MONETARY, 'de_DE');
   echo money_format('%=*ae_-14#8.2i', 1234.56) . " ";
   // DEM 1234,56****

    // А теперь добавим текст перед и после описателя формата
   setlocale(LC_MONETARY, 'en_GB');
   $fmt = 'The final value is %i (after a 10%% discount)';
   echo money_format($fmt, 1234.56) . " ";
   // The final value is  GBP 1,234.56 (after a 10% discount)
?>