php

숫자 한글 변화 - php / javascript

하나에하나 2013. 8. 13. 15:05

새로 짜 볼까 하다가

번뜩 귀찮다라는 생각이 들었다.

분명 어딘가 반드시 있을거라고. 역시 구글링~~~

 

변환1. - php

출처 - http://www.nuno21.net/bbs/board.php?bo_table=php&wr_id=7&sfl=&stx=&sst=wr_datetime

 

// $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++)<BR> {
// 대자릿수 결정
$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]);<BR>
// 해당 소자릿수가 0일 경우 삭제
for ($C=0;$C<4;$C++) if (ereg($ul[$C],$tm[$A])){ $tm[$A] = str_replace($ul[$C],"",$tm[$A]); }<BR>
// 대자릿수 붙임
$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;
}
?>

변환2 - javascript

출처 - http://www.xpressengine.com/index.php?mid=jsClass&page=3&document_srl=19368165&sort_index=regdate

 

<script>
function num2han(num){
/*
* 숫자2한글 스크립트
* 만든넘 : 행복한고니(gonom9@empal.com)
*/
        var i, j=0, k=0;
        var han1 = new Array("","일","이","삼","사","오","육","칠","팔","구");
        var han2 = new Array("","만","억","조","경","해","시","양","구","간");
        var han3 = new Array("","십","백","천");
        var result="", hangul = num + "", pm = "";
        var str = new Array(), str2="";
        var strTmp = new Array();

        if(parseInt(num)==0) return "영"; //입력된 숫자가 0일 경우 처리
        if(hangul.substring(0,1) == "-"){ //음수 처리
                pm = "마이너스 ";
                hangul = hangul.substring(1, hangul.length);
        }
        if(hangul.length > han2.length*4) return "too much number"; //범위를 넘는 숫자 처리 자리수 배열 han2에 자리수 단위만 추가하면 범위가 늘어남.

        for(i=hangul.length; i > 0; i=i-4){
                str[j] = hangul.substring(i-4,i); //4자리씩 끊는다.
                for(k=str[j].length;k>0;k--){
                        strTmp[k] = (str[j].substring(k-1,k))?str[j].substring(k-1,k):"";
                        strTmp[k] = han1[parseInt(strTmp[k])];
                        if(strTmp[k]) strTmp[k] += han3[str[j].length-k];
                        str2 = strTmp[k] + str2;
                }
                str[j] = str2;
                if(str[j]) result = str[j]+han2[j]+result;
                //4자리마다 한칸씩 띄워서 보여주는 부분. 우선은 주석처리
                //result = (str[j])? " "+str[j]+han2[j]+result : " " + result;

                j++; str2 = "";
        }

        return pm + result; //부호 + 숫자값
}
</script>

-------------------


작성자가 자바스크립트는 ie6.0 으로 테스트 한 것 같다.

실제 코드로 적용할땐 그때 그때 바꾸면 될 듯 하다.

바꾸게 되고 그게 예제 코드와 다르면 코멘트로 처리하겠다.

자세한 내용은 출처 링크를 확인하세요.

 

 

 

'php' 카테고리의 다른 글

문자열 중 일부를 * 표시로 가리기  (0) 2015.05.20
ftp 관련  (0) 2014.10.15
mpdf  (0) 2011.10.06
CodeIgniter   (0) 2011.10.06
php 정규표현식  (0) 2011.03.07