Strings money_format

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

money_format — 숫자를 통화 문자열로 형식화

경고 이 함수는 PHP 7.4.0부터 DEPRECATED되었으며 PHP 8.0.0부터 제거되었습니다. 이 함수에 의존하는 것은 매우 권장되지 않습니다.


설명

money_format(string $format, float $number): string

money_format()은 형식화된 버전의 number를 반환합니다. 이 함수는 C 라이브러리 함수 strfmon()을 래핑하지만 이 구현은 한 번에 하나의 숫자만 변환한다는 차이점이 있습니다.


매개변수

format
형식 사양은 다음 순서로 구성됩니다.
  • % character

  • optional flags
  • optional field width
  • optional left precision
  • optional right precision
  • 필수 변환 문자
Flags

아래의 선택적 플래그 중 하나 이상을 사용할 수 있습니다.

=f
문자 = 다음에 숫자 채우기 문자로 사용할 (단일 바이트) 문자 f가 옵니다. 기본 채우기 문자는 공백입니다.
^
그룹화 문자의 사용을 비활성화합니다(현재 로케일에서 정의한 대로).
+ or (
양수 및 음수에 대한 서식 스타일을 지정합니다. +가 사용되면 +-에 해당하는 로케일이 사용됩니다. (을 사용하는 경우 음수 금액은 괄호로 묶습니다. 지정하지 않으면 기본값은 +입니다.
!
출력 문자열에서 통화 기호를 표시하지 않습니다.
-
존재하는 경우 필드가 오른쪽 정렬(왼쪽에 채워짐)되는 기본값과 달리 모든 필드를 왼쪽 정렬(오른쪽에 채워짐)로 만듭니다.
Field width
w
최소 필드 너비를 지정하는 10진수 문자열입니다. 플래그 -가 사용되지 않는 한 필드는 오른쪽 정렬됩니다. 기본값은 0입니다.
Left precision
#n
소수점 왼쪽에 예상되는 최대 자릿수(n)입니다(예: 소수점). 일반적으로 자릿수가 n보다 작은 경우 채우기 문자를 사용하여 형식이 지정된 출력을 동일한 열에 정렬된 상태로 유지하는 데 사용됩니다. 실제 자릿수가 n보다 크면 이 사양은 무시됩니다.

^ 플래그를 사용하여 그룹화가 억제되지 않은 경우 채우기 문자(있는 경우)가 추가되기 전에 그룹화 구분 기호가 삽입됩니다. 채우기 문자가 숫자인 경우에도 그룹화 구분 기호는 채우기 문자에 적용되지 않습니다.

정렬을 보장하기 위해 통화 또는 기호 기호와 같이 형식이 지정된 출력에서 ​​숫자 앞이나 뒤에 나타나는 모든 문자는 양수 형식과 음수 형식을 동일한 길이로 만들기 위해 필요에 따라 공백 문자로 채워집니다.

Right precision
.p
마침표 뒤에 10진수 문자 뒤의 자릿수(p)가 옵니다. p의 값이 0(영)이면 10진수 문자와 그 오른쪽의 숫자가 생략됩니다. 올바른 정밀도가 포함되지 않은 경우 기본값은 사용 중인 현재 로케일에 따라 결정됩니다. 서식이 지정되는 양은 서식 지정 전에 지정된 자릿수로 반올림됩니다.
Conversion characters
i
숫자는 로캘의 국제 통화 형식에 따라 형식이 지정됩니다(예: 미국 로캘의 경우: USD 1,234.56).
n
숫자는 로캘의 국가 통화 형식에 따라 형식이 지정됩니다(예: de_DE 로캘의 경우: EU1.234,56).
%
% 문자를 반환합니다.
number
서식을 지정할 숫자입니다.

반환 값

형식이 지정된 문자열을 반환합니다. 서식 문자열 앞뒤의 문자는 변경되지 않고 반환됩니다. number가 아닌 경우 null이 반환되고 E_WARNING이 발생합니다.


변경 로그

버전 설명
7.4.0 이 함수는 더 이상 사용되지 않습니다. 대신 NumberFormatter::formatCurrency()를 사용하십시오.

Examples

예제 #1 money_format() 예제

우리는 이 함수의 사용을 설명하기 위해 다른 로케일과 형식 사양을 사용할 것입니다.

                  
<?php
$number = 1234.56;

// let's print the international format for the en_US locale
setlocale(LC_MONETARY, 'en_US');
echo money_format('%i', $number) . "\n";
// USD 1,234.56

// Italian national format with 2 decimals`
setlocale(LC_MONETARY, 'it_IT');
echo money_format('%.2n', $number) . "\n";
// Eu 1.234,56

// Using a negative number
$number = -1234.5672;

// US national format, using () for negative numbers
// and 10 digits for left precision
setlocale(LC_MONETARY, 'en_US');
echo money_format('%(#10n', $number) . "\n";
// ($        1,234.57)

// Similar format as above, adding the use of 2 digits of right
// precision and '*' as a fill character
echo money_format('%=*(#10.2n', $number) . "\n";
// ($********1,234.57)

// Let's justify to the left, with 14 positions of width, 8 digits of
// left precision, 2 of right precision, without the grouping character
// and using the international format for the de_DE locale.
setlocale(LC_MONETARY, 'de_DE');
echo money_format('%=*^-14#8.2i', 1234.56) . "\n";
// Eu 1234,56****

// Let's add some blurb before and after the conversion specification
setlocale(LC_MONETARY, 'en_GB');
$fmt = 'The final value is %i (after a 10%% discount)';
echo money_format($fmt, 1234.56) . "\n";
// The final value is  GBP 1,234.56 (after a 10% discount)

?>
                  
                

메모

메모: money_format() 함수는 시스템에 strfmon 기능이 있는 경우에만 정의됩니다. 예를 들어 Windows는 그렇지 않으므로 money_format()은 Windows에서 정의되지 않습니다.

메모: 로케일 설정의 LC_MONETARY 범주는 이 함수의 동작에 영향을 줍니다. 이 함수를 사용하기 전에 setlocale()을 사용하여 적절한 기본 로케일로 설정하십시오.


기타

  • setlocale() - 로케일 정보 설정
  • sscanf() - 형식에 따라 문자열의 입력을 구문 분석합니다.
  • sprintf() - 형식이 지정된 문자열 반환
  • printf() - 형식이 지정된 문자열 출력
  • number_format() - 그룹화된 천 단위로 숫자 서식 지정