본문 바로가기
PHP

[PHP] NumberFormatter로 '2000000'을 '이백만'으로 변환하기

by teamnova 2025. 11. 5.
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 -> 이백만

--- 응용: 영수증 표기 ---
금 이백만원정