<?php function num2hangul($number) {
// 사용할 상수들 $s_number = array("","일","이","삼","사","오","육","칠","팔","구"); $s_numbert = array("","일","이","삼","사","오","육","칠","팔","구"); $s_weights = array("","십","백","천"); $s_weightb = array("","만 ","억 ","조 ","경 ","해 "); $s_zero = array("영","영","공"); $s_dot = "점 "; $s_minus = "마이너스 ";
// 우선 -부호를 처리해준다. if($minus = (substr($number,0,1) == "-")) $number = substr($number,1);
// 소숫점의 위치를 알아낸다. if(($has_point = $point = strpos($number,".")) === false) $point = strlen($number);
// 우선 정수부분부터 처리한다. $part = "";
for($i = $point-1; $i >= 0; $i--) {
// 뒤부터 한자리씩 저장한다. $part = $number[$i].$part;
// 그렇게 해서 4자리가 채워지거나, 더이상 숫자를 넣을 수 없다면 if(strlen($part) == 4 || $i == 0) {
$s_part = "";
for($j=strlen($part)-1;$j>=0;$j--) {
if($part[$j] > 0) {
$s_part = ($j || $i + $j < $point - 1 ? $s_numbert[$part[$j]] : $s_number[$part[$j]]). $s_weights[strlen($part) -$j - 1].$s_part; } }
if($s_part) $s_part .= $s_weightb[($point - $i - 1) / 4]; $str = $s_part.$str; $part = ""; } } if($minus) { $str = $s_minus . $str; }
if($str == "") { $str = $s_zero[0]; }
if($has_point) { $str .= $s_dot; }
// 소수부분을 마저 처리한다. // 0의 처리는: 유효자릿수의 0은 $s_zero[2], 아니면 $s_zero[1]을 사용함. $len = strlen($number); $flag = 0; // 이미 0이 아닌 숫자를 지났는가?
for($i=$point+1;$i<$len;$i++) {
if($number[$i] == "0") {
$str .= ($flag ? $s_zero[2] : $s_zero[1]); }
else {
$str .= $s_number[$number[$i]]; $flag = 1; } } return $str; }
$test = '5348256'; // 변경할 숫자값
echo num2hangul($test); ?>
|