Функции за низове
PHP Manual

money_format

(PHP 4 >= 4.3.0, PHP 5)

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 е 0 (нула), символа за десетична запетая и знаците след него няма да бъдат изведени. Ако не е указана точност след десетичната запетая, стойността по подразбиране ще зависи от текущия локал. Преди форматирането, числото се закръгля до указаното количество знаци.

Знаци за преобразуването

i

Числото се форматира съгласно международния формат на валутата на текущия локал (например за локала на САЩ: USD 1,234.56).

n

Числото се форматира съгласно националния формат на валутата на текущия локал (например за de_DE локал: DM1.234,56).

%

Връща знака %.

number

Числото, което трябва да се форматира.

Връщани стойности

Връща форматираният низ. Знаците преди и след форматирания низ ще бъдат върнати непроменени. Ако параметърът 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($fmt1234.56) . "\n";
// Крайната цена е GBP 1,234.56 (след 10% намаление)

?>

Вж. също


Функции за низове
PHP Manual