새로 짜 볼까 하다가
번뜩 귀찮다라는 생각이 들었다.
분명 어딘가 반드시 있을거라고. 역시 구글링~~~
변환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 |