PHP
[PHP] NumberFormatter로 '2000000'을 '이백만'으로 변환하기
teamnova
2025. 11. 5. 14:19
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 -> 이백만
--- 응용: 영수증 표기 ---
금 이백만원정