Maison  >  Article  >  développement back-end  >  Comment convertir le RMB minuscule en majuscule en php

Comment convertir le RMB minuscule en majuscule en php

藏色散人
藏色散人original
2021-03-17 09:54:372587parcourir

Comment convertir le RMB de minuscules en majuscules en php : créez d'abord un exemple de fichier PHP ; puis transmettez "function num2rmb($number = 0, $int_unit = '', $is_round=FALSE...){ ... }" peut être utilisée pour convertir le RMB des minuscules en majuscules.

Comment convertir le RMB minuscule en majuscule en php

L'environnement d'exploitation de cet article : système Windows7, version PHP7.1, ordinateur DELL G3

php RMB minuscule à majuscule fonction, non Longueur limitée, précise en minutes

Lors de l'impression ou de l'affichage de factures, nous devons souvent convertir le montant de RMB des minuscules aux majuscules. Ce qui suit est une fonction que j'ai améliorée, que j'ai améliorée. prend en charge les fonctionnalités suivantes :

  • Prend en charge les nombres astronomiques, les chiffres entiers peuvent théoriquement être infiniment longs ;

  • Prend en charge les décimales, pour la monnaie, c'est généralement précis à deux décimales près, vous pouvez définir si les décimales sont arrondies

  • Prend en charge les unités monétaires personnalisées. Certains systèmes exigent que le capital soit « rond » et d'autres nécessitent « yuans ». , qui peut être personnalisé ;

  • Prend en charge le remplissage personnalisé de « zéro » à la fin des nombres avec des entiers se terminant par 0 et contenant des décimales. Par exemple, certains systèmes exigent un nombre comme 1960,30. être convertis en majuscules pour être "Mille neuf cent, six cent trois" "Jiao", alors que certains systèmes exigent "Mille neuf cent soixante yuans et trois jiao". Dans les deux cas, ils sont corrects selon les « Règlements de base ». pour remplir correctement les factures et les bons de règlement", et peut désormais être personnalisé.

/** 
 * 人民币小写转大写 
 * 
 * @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; 
}

Résultat de sortie :

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

Apprentissage recommandé : "Tutoriel vidéo PHP"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn