function num2hanja_v2($number)
{
//echo $number;
// 사용할 상수들
$s_number = array("","一","二","三","四","五","六","七","八","九");
$s_numbert = array("","一","二","三","四","五","六","七","八","九");
$s_weights = array("","十","拾","百");
$s_weightb = array("","萬 ","億 ","億 ","京","垓");
$s_zero = array("영","영","공");
$s_dot = "점 ";
$s_minus = "마이너스 ";
// 우선 -부호를 처리해준다.
if($minus = (substr($number,0,1) == "-")) $number = substr($number,1);
// 소숫점의 위치를 알아낸다.
if(($has_point = $point = strpos($number,".")) === false) $point = strlen($number);
// 우선 정수부분부터 처리한다.
$part = "";
for($i=$point-1;$i>=0;$i--)
{
// 뒤부터 한자리씩 저장한다.
$part = $number[$i].$part;
// 그렇게 해서 4자리가 채워지거나, 더이상 숫자를 넣을 수 없다면...
if(strlen($part)==4 || $i==0)
{
$s_part = "";
for($j=strlen($part)-1;$j>=0;$j--)
if($part[$j] > 0)
$s_part = ($j||$i+$j<$point-1 ? $s_numbert[$part[$j]] : $s_number[$part[$j]]).
$s_weights[strlen($part)-$j-1].$s_part;
if($s_part) $s_part .= $s_weightb[($point-$i-1)/4];
$str = $s_part.$str;
$part = "";
}
}
if($minus) $str = $s_minus . $str;
if($str == "") $str = $s_zero[0];
if($has_point) $str .= $s_dot;
// 소수부분을 마저 처리한다.
// 0의 처리는: 유효자릿수의 0은 $s_zero[2], 아니면 $s_zero[1]을 사용함.
$len = strlen($number);
$flag = 0; // 이미 0이 아닌 숫자를 지났는가?
for($i=$point+1;$i<$len;$i++)
if($number[$i] == "0")
$str .= ($flag ? $s_zero[2] : $s_zero[1]);
else {
$str .= $s_number[$number[$i]]; $flag = 1;
}
//echo $str;
return $str;
}