본문 바로가기

PHP/PHP Programming

[PHP] 숫자 → 문자로 변경

반응형

■ 숫자 → 문자로 변경



 아래 함수는 PHP 사용자지정 함수를 통하여 숫자로 입력된 변수값을 함수를 통하여 문자로 변경하는 경우이다.



 number_hangul_change.php

<?php
    function num2hangul($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;
            }
        }
        return $str;
    }

    $test = '5348256';    // 변경할 숫자값

    echo num2hangul($test);
?>

 출력결과


반응형