[PHP] 숫자 ->한글변환
컨텐츠 정보
- 20,252 조회
- 8 추천
- 목록
본문
<?
// $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;
}
?>
// $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;
}
?>
관련자료
댓글 0
등록된 댓글이 없습니다.