> 백엔드 개발 > PHP 문제 > PHP에서 소문자 RMB를 대문자로 변환하는 방법

PHP에서 소문자 RMB를 대문자로 변환하는 방법

藏色散人
풀어 주다: 2023-03-08 18:56:01
원래의
2662명이 탐색했습니다.

PHP에서 RMB를 소문자에서 대문자로 변환하는 방법: 먼저 PHP 샘플 파일을 만든 다음 "함수 num2rmb($number = 0, $int_unit = '', $is_round=FALSE...)를 사용하세요. }" 변환 방법 RMB를 소문자에서 대문자로 변환하면 됩니다.

PHP에서 소문자 RMB를 대문자로 변환하는 방법

이 문서의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터

php RMB 소문자 대 대문자 기능, 길이 제한 없음, 분 단위 정확

인보이스 인쇄 시 또는 청구서를 표시할 때 RMB 금액을 소문자에서 대문자로 변환해야 하는 경우가 있습니다. 다음은 다음 기능을 지원하는 기능을 개선한 것입니다.

  • 천문 숫자를 지원하며 정수 숫자는 이론적으로 무한히 길 수 있습니다.

  • 소수점을 지원합니다. 통화의 경우 일반적으로 소수점 이하 두 자리까지 정확하며 소수점 자리를 반올림할지 여부를 설정할 수 있습니다.

  • 일부 시스템에서는 대문자를 "반올림"해야 합니다. 일부 시스템에서는 사용자 정의할 수 있는 "위안"이 필요합니다.

  • 정수로 끝나고 소수점 이하 자릿수를 포함하는 숫자 끝에 사용자 정의 패딩을 지원합니다. 예를 들어 일부 시스템에서는 1960.30과 같은 숫자를 변환해야 합니다. 대문자는 "1천9백6백달러 3각"이고 일부 시스템에서는 "1천960위안 030센트"가 필요합니다. 두 경우 모두 "기본 규정에 따라 정확합니다. 청구서 및 정산 바우처를 올바르게 작성하기 위해". 이제 사용자 정의할 수 있습니다.

/** 
 * 人民币小写转大写 
 * 
 * @param string $number 数值 
 * @param string $int_unit 币种单位,默认"元",有的需求可能为"圆" 
 * @param bool $is_round 是否对小数进行四舍五入 
 * @param bool $is_extra_zero 是否对整数部分以0结尾,小数存在的数字附加0,比如1960.30, 
 *             有的系统要求输出"壹仟玖佰陆拾元零叁角",实际上"壹仟玖佰陆拾元叁角"也是对的 
 * @return string 
 */ 
function num2rmb($number = 0, $int_unit = '', $is_round = FALSE, $is_extra_zero = FALSE , $rmb = FALSE) 
{ 
    // 将数字切分成两段 
    $parts = explode('.', $number, 2); 
    $int = isset($parts[0]) ? strval($parts[0]) : '0'; 
    $dec = isset($parts[1]) ? strval($parts[1]) : ''; 
 
    // 如果小数点后多于2位,不四舍五入就直接截,否则就处理 
    $dec_len = strlen($dec); 
    if (isset($parts[1]) && $dec_len > 2) 
    { 
        $dec = $is_round 
                ? substr(strrchr(strval(round(floatval("0.".$dec), 2)), '.'), 1) 
                : substr($parts[1], 0, 2); 
    } 
 
    // 当number为0.001时,小数点后的金额为0元 
    if(empty($int) && empty($dec)) 
    { 
        return '零'; 
    } 
 
    // 定义 
    if($rmb){
        $chs = array('0','壹','贰','叁','肆','伍','陆','柒','捌','玖'); 
        $uni = array('','拾','佰','仟'); 
        $dec_uni = array('角', '分'); 
        $exp = array('', '万'); 
    }else {
        $chs = array('0','一','二','三','四','五','六','七','八','九'); 
        $uni = array('','十','百','千'); 
        $dec_uni = array('角', '分'); 
        $exp = array('', '万'); 
    }
    
 
   
 
 
    $res = ''; 
 
    // 整数部分从右向左找 
    for($i = strlen($int) - 1, $k = 0; $i >= 0; $k++) 
    { 
        $str = ''; 
        // 按照中文读写习惯,每4个字为一段进行转化,i一直在减 
        for($j = 0; $j < 4 && $i >= 0; $j++, $i--) 
        { 
            $u = $int{$i} > 0 ? $uni[$j] : &#39;&#39;; // 非0的数字后面添加单位 
            $str = $chs[$int{$i}] . $u . $str; 
        } 
        //echo $str."|".($k - 2)."<br>"; 
        $str = rtrim($str, &#39;0&#39;);// 去掉末尾的0 
        $str = preg_replace("/0+/", "零", $str); // 替换多个连续的0 
        if(!isset($exp[$k])) 
        { 
            $exp[$k] = $exp[$k - 2] . &#39;亿&#39;; // 构建单位 
        } 
        $u2 = $str != &#39;&#39; ? $exp[$k] : &#39;&#39;; 
        $res = $str . $u2 . $res; 
    } 
 
    // 如果小数部分处理完之后是00,需要处理下 
    $dec = rtrim($dec, &#39;0&#39;); 
 
    // 小数部分从左向右找 
    if(!empty($dec)) 
    { 
        $res .= $int_unit; 
 
        // 是否要在整数部分以0结尾的数字后附加0,有的系统有这要求 
        if ($is_extra_zero) 
        { 
            if (substr($int, -1) === &#39;0&#39;) 
            { 
                $res.= &#39;零&#39;; 
            } 
        } 
 
        for($i = 0, $cnt = strlen($dec); $i < $cnt; $i++) 
        { 
            $u = $dec{$i} > 0 ? $dec_uni[$i] : &#39;&#39;; // 非0的数字后面添加单位 
            $res .= $chs[$dec{$i}] . $u; 
        } 
        $res = rtrim($res, &#39;0&#39;);// 去掉末尾的0 
        $res = preg_replace("/0+/", "零", $res); // 替换多个连续的0 
    } 
    else 
    { 
        if($rmb){
            $res .= $int_unit . &#39;整&#39;; 
        }
        
    } 
    return $res; 
}
로그인 후 복사

출력 결과:

1000000000000000012345678900.501:壹仟亿亿亿零壹佰贰拾叁亿肆仟伍佰陆拾柒万捌仟玖佰元伍角 
1960.30:壹仟玖佰陆拾元叁角 
1960.30:壹仟玖佰陆拾圆零叁角 
123456789.005:壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖元零壹分 
123456789.005:壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖元整 
10000000000000000060009.101:壹佰万亿亿零陆万零玖元壹角 
1680.32:壹仟陆佰捌拾元叁角贰分
로그인 후 복사

추천 학습: "PHP 비디오 튜토리얼"

위 내용은 PHP에서 소문자 RMB를 대문자로 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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