(PHP 4 >= 4.3.0, PHP 5, PHP 7)

money_format — Форматирует число как денежную величину

Описание

string money_format ( string $format , float $number )

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

Список параметров

format

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

  • символа %

  • необязательных флагов

  • необязательной ширины поля

  • необязательной точности до запятой

  • необязательной точности после запятой

  • обязательного описателя преобразования

Флаги

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

=f

Символ =, за которым следует еще один символ f, задает символ заполнения. По умолчанию пробел.

^

Отключает группировку символов (определяемую текущей локалью).

+ или (

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

!

Подавляет вывод символа валюты.

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

Ширина поля
w

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

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

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

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

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

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

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

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

Используется международный денежный формат из текущей локали (например, для американской локали: USD 1,234.56).

n

Используется национальный денежный формат из текущей локали (например, для локали de_DE: EU1.234,56).

%

Вставляет символ %.

number

Форматируемое число.

Возвращаемые значения

Возвращает отформатированную строку. Символы перед и после описания формата возвращаются без изменений. Если number не является числом, то будет возвращен NULL и вызвана ошибка уровня E_WARNING.

Примечания

Замечание:

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

Замечание:

На работу этой функции влияет установка категории 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";
// Eu 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";
// Eu 1234,56****

// А теперь добавим текст перед и после описанием формата
setlocale(LC_MONETARY, 'en_GB');
$fmt = 'Итоговая сумма: %i (после 10%% скидки)';
echo money_format($fmt, 1234.56) . "\n";
// Итоговая сумма:  GBP 1,234.56 (после 10% скидки)

?>