人民币数字转化为大写的汉文

    public function ggg(){
        $s = $this->cny('122');
        echo $s;      //壹佰贰拾贰元
    }




    /***
     *人民币大写转化;~~~
     */
    private function cny($ns) {
        static $cnums = array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖"),
        $cnyunits = array("元","角","分"),                         //----表格背景有元;
        $grees = array("拾","佰","仟","万","式","拜","仟");//"拾","佰","仟","万","式"(拾),"拜"(佰),"签"(仟),"亿"~~临时替代~~临时替代

        list($ns1,$ns2) = explode(".",$ns,2);
        $ns2 = array_filter(array($ns2[1],$ns2[0]));
        $ret = array_merge($ns2,array(implode("",$this->_cny_map_unit(str_split($ns1),$grees)),""));
        $ret = implode("",array_reverse($this->_cny_map_unit($ret,$cnyunits)));
        return str_replace(array_keys($cnums),$cnums,$ret);
    }


    private function _cny_map_unit($list,$units) {
        $ul = count($units);
        $xs = array();
        foreach (array_reverse($list) as $x) {
            $l = count($xs);
            if ($x!="0" || !($l%4)) $n=($x=='0'?'':$x).($units[($l-1)%$ul]);
            else $n = is_numeric($xs[0][0])?$x:'';
            array_unshift($xs,$n);
        }
        return $xs;
    }
posted @   盘思动  阅读(234)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
历史上的今天:
2019-07-09 查看php 某个服务的进程数
2018-07-09 git clone 指定分支的内容
点击右上角即可分享
微信分享提示