(PHP 4 >= 4.3.0, PHP 5, PHP 7)
money_format — Форматирует число как денежную величину
Эта функция УСТАРЕЛА, начиная с PHP 7.4.0 и была УДАЛЕНА, начиная с PHP 8.0.0. Использовать эту функцию крайне не рекомендуется.
$format
, float $number
): string
money_format() форматирует число
number
как денежную величину.
Эта функция вызывает функцию strfmon() языка C,
но позволяет преобразовать только одно число за один вызов.
format
Описание формата состоит из:
символа %
необязательных флагов
необязательной ширины поля
необязательной точности до запятой
необязательной точности после запятой
обязательного описателя преобразования
Могут быть использованы следующие флаги:
=
f
Символ =
, за которым следует ещё один символ
f, задаёт символ заполнения.
По умолчанию пробел.
^
Отключает группировку символов (определяемую текущей локалью).
+
или (
Задаёт способ форматирования положительных и отрицательных
значений. При использовании +
будут
использоваться аналоги символов +
и
-
из текущей локали. Если указана
(
, отрицательные числа будут заключены в
скобки. По умолчанию +
.
!
Подавляет вывод символа валюты.
-
Если этот флаг задан, поля будут выравнены влево (с отбивкой вправо), вместо используемого по умолчанию выравнивания вправо (с отбивкой влево).
Строка из десятичных цифр, задающая минимальную ширину поля.
Поле будет выравнено вправо, если не указан флаг
-
. Значение по умолчанию - 0 (ноль).
#
nМаксимальное количество цифр (n), которое ожидается до запятой. Это обычно используется при выводе значений одно под другим, чтобы десятичные точки располагались в одной колонке, при этом используется символ заполнения, если число цифр меньше n. Если число цифр больше n, этот параметр игнорируется.
Если группировка не была отключена флагом ^
,
разделители групп будут вставлены перед добавлением символов
заполнения. Разделители групп не вставляются между символами
заполнения, даже если заполнитель - цифра.
Для обеспечения выравнивания, все символы, выводимые до или после числа, такие как символ валюты или знак, будут дополнены пробелами до одинаковой ширины.
.
pТочка, за которой следует число знаков (p), выводимых после запятой. Если значение p равно нулю, десятичная точка и цифры после неё не будут выводиться. Если этот параметр отсутствует, число знаков после запятой определяется текущей локалью. Перед форматированием число округляется до указанного количества знаков.
i
Используется международный денежный формат из текущей локали (например, для американской локали: USD 1,234.56).
n
Используется национальный денежный формат из текущей локали (например, для локали de_DE: EU1.234,56).
%
Вставляет символ %
.
number
Форматируемое число.
Возвращает отформатированную строку. Символы перед и после
описания формата возвращаются без изменений.
Если number
не является числом, то будет
возвращён null
и вызвана ошибка уровня E_WARNING
.
Версия | Описание |
---|---|
7.4.0 | Функция устарела. Вместо неё используйте NumberFormatter::formatCurrency(). |
Пример #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% скидки)
?>
Замечание:
Функция money_format() определена только если в системе присутствует функция strfmon. Например, в Windows она отсутствует, поэтому money_format() не определена в Windows.
Замечание:
На работу этой функции влияет установка категории
LC_MONETARY
текущей локали. Перед использованием этой функции установите нужную локаль с помощью setlocale().