PHP & Others

[PHP] 숫자 ->한글변환

페이지 정보

본문

<?
// $string = 변환할 숫자
// $AddSpace = 대자릿수 사이에 공백 붙일것인지 ( 초기값 붙이지 않음 )
// $PrintNum = 변환된 숫자를 출력할 것인지 ( 초기값 출력하지 않음 )
function num2han($string,$AddSpace="",$PrintNum="")
{
$hn = array("영","일","이","삼","사","오","육","칠","팔","구");
$hj = array("만","억","조","경","해","시","양","구","간","정","재","극","항하사","아승지","나유타","불가사의","무량대수");
$ul = array("영천","영백","영십","영");

// 네자리씩 나누어 올림 ( 자리수 붙이기 위해 )
$loop_size = ceil(strlen($string)/4);

// 마지막 자리의 빈수를 구해 0으로 채움
$last_jari = str_repeat("0",($loop_size-strlen($string)/4)/0.25);

// 넘겨진 숫자 뒤집는다 ( 뒤부터 계산하기 위해 )
$string = strrev($string);

// 변환 시작
for ($A=0;$A<$loop_size;$A++)
{
// 대자릿수 결정
$sum = $hj[$A-1];

// 해당 대자릿수에 해당하는 숫자 추출
$tm[$A] = substr($string,$A*4,4);

// 뒤집어져 있으므로 원래대로
$tm[$A] = strrev($tm[$A]);

// 마지막 자리일 경우 0 붙인다
if ($A+1==$loop_size) $tm[$A] = $last_jari.$tm[$A];

// 소자릿수 붙인다
$tm[$A] = $tm[$A][0]."천".$tm[$A][1]."백".$tm[$A][2]."십".$tm[$A][3];

// 0~9까지 숫자변환
for ($B=0;$B<10;$B++) $tm[$A] = str_replace($B,$hn[$B],$tm[$A]);

// 해당 소자릿수가 0일 경우 삭제
for ($C=0;$C<4;$C++) if (ereg($ul[$C],$tm[$A])){ $tm[$A] = str_replace($ul[$C],"",$tm[$A]); }

// 대자릿수 붙임
$tm[$A] .= $sum;
}

// 띄기 필요할 경우
if ($AddSpace) $sum2 = " ";

// 다시 붙인다.
for ($loop_size;$loop_size>-1;$loop_size--) $result .= $tm[$loop_size].$sum2;

// 출력 필요할 경우
if ($PrintNum) echo $result;

return $result;
}
?>

관련자료

등록된 댓글이 없습니다.
Today's proverb
“무릇 물이란 지세를 따라 흐르되 작은 틈도 놓치지 않고 적시니 지혜를 갖춘 자와 같고, 움직이면서 아래로 흘러가니 예를 갖춘 자와 같으며, 어떤 깊은 곳도 머뭇거리지 않고 들어가니 용기를 가진 자와 같고 장애물이 막혀서 갇히면 고요히 맑아지니 천명을 아는 자와 같으며, 험한 곳을 거쳐 멀리 흐르지만 끝내 남을 허물어뜨리는 법이 없으니 덕을 가진 자와 같다. 천지는 이것으로 이루어지고, 만물은 이것으로 살아가며, 나라는 이것으로 안녕을 얻고, 만사는 이것으로 평안해지며, 만물은 이것으로 바르게 되는 것이다. 이것이 지혜로운 자가 물을 좋아하는 이유이다.” (한영, <<한시외전>>)