PHP를 사용하면 숫자 금액을 중국어 번체 대문자로 쉽게 변환할 수 있습니다(실제 테스트)

藏色散人
풀어 주다: 2023-04-10 17:10:02
앞으로
3657명이 탐색했습니다.

여기에 가서 테스트할 수 있습니다. (https://sandbox.onlinephpfunctions.com/code/0cc068d3c89904e55d8aa9e55fdfa45eaab70c37)

숫자 양을 중국어 번체 대문자로 변환:

if (!function_exists('rmb_capital')) {
    /**
     * 金额转中文大写
     *
     * @param  mixed  $amount
     * @return string
     */
    function rmb_capital($amount)
    {
        $capitalNumbers = [
            '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖',
        ];

        $integerUnits = ['', '拾', '佰', '仟',];

        $placeUnits = ['', '万', '亿', '兆',];

        $decimalUnits = ['角', '分', '厘', '毫',];

        $result = [];

        $arr = explode('.', $amount);

        $integer = trim($arr[0] ?? '', '-');
        $decimal = $arr[1] ?? '';

        if (!((int) $decimal)) {
            $decimal = '';
        }

        // 转换整数部分
        // 从个位开始

        $integerNumbers = $integer ? array_reverse(str_split($integer)) : [];

        $last = null;
        foreach (array_chunk($integerNumbers, 4) as $chunkKey => $chunk) {
            if (!((int) implode('', $chunk))) {
                // 全是 0 则直接跳过
                continue;
            }

            array_unshift($result, $placeUnits[$chunkKey]);

            foreach ($chunk as $key => $number) {
                // 去除重复 零,以及第一位的 零,类似:1002、110
                if (!$number && (!$last || $key === 0)) {
                    $last = $number;
                    continue;
                }
                $last = $number;

                // 类似 1022,中间的 0 是不需要 佰 的
                if ($number) {
                    array_unshift($result, $integerUnits[$key]);
                }

                array_unshift($result, $capitalNumbers[$number]);
            }
        }

        if (!$result) {
            array_push($result, $capitalNumbers[0]);
        }

        array_push($result, '圆');

        if (!$decimal) {
            array_push($result, '整');
        }

        // 转换小数位
        $decimalNumbers = $decimal ? str_split($decimal) : [];
        foreach ($decimalNumbers as $key => $number) {
            array_push($result, $capitalNumbers[$number]);
            array_push($result, $decimalUnits[$key]);
        }

        if (strpos((string) $amount, '-') === 0) {
            array_unshift($result, '负');
        }

        return '人民币' . implode('', $result);
    }
}
로그인 후 복사

이 함수는 매개 변수가 숫자 값인지 확인하지 않습니다. ​

간단한 테스트:

:人民币零圆整

dsfa:人民币零圆整

0:人民币零圆整

1:人民币壹圆整

12:人民币壹拾贰圆整

10:人民币壹拾圆整

102:人民币壹佰零贰圆整

110:人民币壹佰壹拾圆整

1002:人民币壹仟零贰圆整

1010:人民币壹仟零壹拾圆整

1022:人民币壹仟零贰拾贰圆整

100002:人民币壹拾万零贰圆整

1020345:人民币壹佰零贰万零叁佰肆拾伍圆整

100:人民币壹佰圆整

10000:人民币壹万圆整

-22342.432:人民币负贰万贰仟叁佰肆拾贰圆肆角叁分贰厘

0.34:人民币零圆叁角肆分

34.04:人民币叁拾肆圆零角肆分

34532:人民币叁万肆仟伍佰叁拾贰圆整

123456789:人民币壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖圆整
로그인 후 복사

오픈 소스 확장 패키지로 변경되었습니다: rmb-capital (https://packagist.org/packages/chuoke/rmb-capital)

추천 학습: "

PHP Video Tutorial
"

위 내용은 PHP를 사용하면 숫자 금액을 중국어 번체 대문자로 쉽게 변환할 수 있습니다(실제 테스트)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
php
원천:learnku.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿