php 把数字转化为大写中文—升级版

继上篇之后,发现某同事悄悄改了新版本,于是被我偷偷保存起来了,功能一样,不过他的比较短小,emmm。放了快一年了,悄悄放到博客里面。
功能需求在另一篇博客里

<?php
function cny_upcase($num) {
    if (!is_numeric($num)) {
        return false;
    } else {
        $num = strval($num);
    }
    $unitDic    = [1 => '圆',2 => '拾',3 => '佰',4 => '仟',5 => '萬',6 => '拾',7 => '佰',8 => '仟', 9 => '億'];
    $decimalDic = [0 => '角',1 => '分',2 => '厘',3 => '毫'];
    $digitDic   = ['零','壹','贰','叁','肆','伍','陆','柒','捌','玖'];
    $int = 0;
    $decimal = 0;
    if (strpos($num,'.') !== false) {
        list($int,$decimal) = explode('.',$num,2);
    } else {
        $int = $num;
    }
    $upNum = '';
    for ($i = 0; $i < strlen($int); $i++) {
        $unitIndex = strlen($int) - $i;
        $upNum .= $digitDic[$int[$i]];
        $upNum .= $int[$i] ? $unitDic[$unitIndex] : '';
    }
    if ($decimal) {
        for ($i = 0; $i < strlen($decimal); $i++) {
            $upNum .= $digitDic[$decimal[$i]];
            $upNum .= $decimal[$i] ? $decimalDic[$i] : '';
        }
    } else {
        $upNum .= '整';
    }
    $upNum = preg_replace('/零+/iu','零',$upNum);
    return preg_replace('/^零/iu','',$upNum);
}
posted @ 2019-10-10 23:18  被水淹死的大白鲨  阅读(234)  评论(0编辑  收藏  举报