(PHP 4 >= 4.3.0, PHP 5)
money_format — Форматира число като парична величина
money_format() връща форматирана версия на number . Тази функция е обвивка на функцията strfmon() от библиотеката на езика C, с тази разлика, че текущата имплементация преобразува само по едно число в даден момент.
Спецификцията на формата се състои от:
символа %
незадължителни флагове
незадължителна ширина на полето
незадължителна точност до десетичната запетая
незадължителна точност след десетичната запетая
задължителен знак за преобразуване
Могат да бъдат използвани един или повече от незадължителните флагове използвани по-долу:
Знакът = последван от друг знак f задава знака за допълване. По подразбиране знакът за допълване е интервал.
Забранява използването на групиращи знаци (съгласно текущия локал).
Указва, стила на форматиране на положителни и отрицателни числа. Ако се използва +, ще се използват еквивалентните стойности за + и - на базата на локала. Ако се използва (, отрицателните стойности ще бъдат оградени с кръгли скоби. Ако не е указано нищо, за стойност по подразбиране се приема +.
Премахва текущият символ от низа за извеждане.
Ако този флаг е зададен, всички полета ще бъдат подравнени в ляво (със свободно място в дясно), противно на състоянието по подразбиране при което полетата са подравнени в дясно (със свободно място в ляво).
Низ от десетични цивфи, задаващ минималната ширина на полето. Ако не е указан флага -, полето ще бъде подравнено в дясно. Стойността му по подразбиране е 0 (нула).
Максималния брой цифри (n) до десетичния знак (например десетична запетая). Обикновено се използва за да се запаси подравняването на изхода в еднакви колони, използвайки знак за допълване, ако числата са по-малко на брой от n. Ако броят на цифрите е по-голям от n, този параметър се игнорира.
Ако групирането не е забранено с флага ^, груповите разделители ще бъдат вмъкнати преди знаците за допълване да се добавят (ако съществуват такива). Груповите разделители няма да бъдат приложени към допълващите знаци, дори и ако допълващият знак е цифра.
За осигуряване на подравняването, всеки знак преди и след числото във форматирания изход, като например знак за валута или символи за положителни или отрицателни числа се уплътняват при необходимост чрез интервали, с цел резултата от форматирането на положителните и отрицателните числа да има една и съща дължина.
Точка, след която има последователност от знаци (p) след символа за десетична запетая. Ако стойността на p е 0 (нула), символа за десетична запетая и знаците след него няма да бъдат изведени. Ако не е указана точност след десетичната запетая, стойността по подразбиране ще зависи от текущия локал. Преди форматирането, числото се закръгля до указаното количество знаци.
Числото се форматира съгласно международния формат на валутата на текущия локал (например за локала на САЩ: USD 1,234.56).
Числото се форматира съгласно националния формат на валутата на текущия локал (например за de_DE локал: DM1.234,56).
Връща знака %.
Числото, което трябва да се форматира.
Връща форматираният низ. Знаците преди и след форматирания низ ще бъдат върнати непроменени. Ако параметърът number не е число, функцията ще върне стойност NULL и ще генерира E_WARNING.
Забележка: Функция money_format() е дефинирана само, ако системата поддръжа strfmon. Например, при Windows нямаме такава поддръжка, така че, функцията там не е дефинирана.
Забележка: Категория LC_MONETARY от настройките на локала, влиеяе на поведението на тази функция. Използвайте setlocale() за да установите съответния локал по подразбиране преди да използвате функцията.
Example #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 = 'Крайната цена е %i (след 10%% намаление)';
echo money_format($fmt, 1234.56) . "\n";
// Крайната цена е GBP 1,234.56 (след 10% намаление)
?>