money_format
(PHP 4 >= 4.3.0, PHP 5, PHP 7)
money_format — Форматирует число как денежную величину
Эта функция объявлена УСТАРЕВШИМ, начиная с PHP 7.4.0 и ее использование крайне не рекомендовано.
Описание
$format
, float $number
) : string
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
.
Список изменений
Версия | Описание |
---|---|
7.4.0 | Функция устарела. Вместо нее используйте NumberFormatter::formatCurrency(). |
Примечания
Замечание:
Функция 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% скидки)
?>
Смотрите также
- setlocale() - Устанавливает настройки локали
- sscanf() - Разбирает строку в соответствии с заданным форматом
- sprintf() - Возвращает отформатированную строку
- printf() - Выводит отформатированную строку
- number_format() - Форматирует число с разделением групп