728x90
안녕하세요.
오늘은 NumberFormatter로 '2000000'을 '이백만'으로 변환해보도록 하겠습니다.
PHP에서 숫자에 쉼표(,)를 찍을 때, 우리는 보통 number_format(1000000) -> 1,000,000을 사용합니다.
하지만 만약 이 숫자를 '₩1,000,000'처럼 그 나라의 통화 기호를 붙여서 표시하거나, '일백만'이라는 한글 단어로 변환해야 한다면 PHP의 intl 확장 기능에 포함된 NumberFormatter 클래스를 활용할 수 있습니다.
이 클래스는 'ko_KR'(한국)이나 'en_US'(미국) 같은 '로캘(Locale)'을 인식하여, 해당 국가의 규칙에 맞게 숫자를 변환해 줍니다.
NumberFormatter 클래스는 mbstring처럼 별도의 intl 확장 기능이 PHP에 설치 및 활성화되어 있어야 합니다.
예제
<?php
// 이 코드를 테스트하려면 intl 확장이 필요합니다.
if (!class_exists('NumberFormatter')) {
echo "오류: 'intl' PHP 확장이 설치되어 있지 않습니다.\n";
exit;
}
$number = 2000000;
$locale = 'ko_KR'; // 한국(South Korea) 로캘
// --- 1. 통화(Currency) 형식으로 변환하기 ---
// NumberFormatter::CURRENCY : 해당 로캘의 통화 형식 (e.g., ₩)
$currencyFormatter = new NumberFormatter($locale, NumberFormatter::CURRENCY);
$currencyResult = $currencyFormatter->format($number);
echo "--- 통화 형식 (CURRENCY) ---\n";
echo $number . " -> " . $currencyResult . "\n\n";
// --- 2. 단어(Spell Out) 형식으로 변환하기 ---
// NumberFormatter::SPELLOUT : 해당 로캘의 언어로 숫자를 읽어줌
$spellOutFormatter = new NumberFormatter($locale, NumberFormatter::SPELLOUT);
$spellOutResult = $spellOutFormatter->format($number);
echo "--- 단어 형식 (SPELLOUT) ---\n";
echo $number . " -> " . $spellOutResult . "\n";
// --- (응용) 견적서/영수증처럼 만들기 ---
echo "\n--- 응용: 영수증 표기 ---\n";
echo "금 " . $spellOutResult . "원정\n";
?>
결과
--- 통화 형식 (CURRENCY) ---
2000000 -> ₩2,000,000
--- 단어 형식 (SPELLOUT) ---
2000000 -> 이백만
--- 응용: 영수증 표기 ---
금 이백만원정'PHP' 카테고리의 다른 글
| [PHP] array_merge와 + 연산자로 두 배열 합치기의 차이점 (0) | 2025.11.09 |
|---|---|
| [PHP] usort()로 '사용자 목록'을 '나이 순'으로 정렬 (0) | 2025.11.06 |
| [PHP] IteratorAggregate - 루프에서 사용될 때 어떤 이터레이터를 사용할지 위임하기. (0) | 2025.11.03 |
| [PHP] 초성 검색 기능 구현하기 (0) | 2025.11.02 |
| [PHP] sscanf()으로 문자열 파싱하기 (0) | 2025.10.30 |