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
자기가 그만한 힘이 없으면서도 커다란 존재라고 생각하는 사람은 거만하다. 또, 자기의 가치를 실제보다 적게 생각하는 사람은 비굴하다. (아리스토 텔레스)