大写金额转换成阿拉伯数字金额

<?php
    /**
     * 大写金额转换成阿拉伯数字金额
     * 
     * FuntionName:convert2Number
     * @param string|$moneyCn
     * @return int|mixed
     * 
     * $moneyCn = "贰亿零壹拾万叁仟零壹圆"; -> 200103001
     * $moneyCn = "玖仟捌佰叁拾亿零壹拾捌万贰仟柒佰圆整"; -> 983000182700
     * $moneyCn = "贰佰亿壹仟万零壹圆整"; -> 20010000001
     */
    function convert2Number($moneyCn)
    {
        static $unit2Number = [
            '亿' => 100000000,
            '万' => 10000,
            '仟' => 1000,
            '佰' => 100,
            '拾' => 10,
            '圆' => 1,
        ];

        static $cn2Number = [
            '零' => 0,
            '壹' => 1,
            '贰' => 2,
            '叁' => 3,
            '肆' => 4,
            '伍' => 5,
            '陆' => 6,
            '柒' => 7,
            '捌' => 8,
            '玖' => 9,
            '拾' => 10,
        ];

        $result = 0;
        foreach($unit2Number as $unit => $number) {
            $pos = mb_strpos($moneyCn, $unit);
            if ($pos === false) {
                // 这个就是没有找到这个需要的单位
                continue;
            }
            $cn = mb_substr($moneyCn, 0, $pos);
            if (mb_substr($cn, 0, 1) == '零') {
                $cn = mb_substr($cn, 1);
            }

            $number = 0;
            if (mb_strlen($cn) == 1) {
                $number = $cn2Number[$cn];
            } else if (mb_strlen($cn) > 1) {
                $number = convert2Number($cn . "圆");
            }
            $result += $number * $unit2Number[$unit];
            $moneyCn = mb_substr($moneyCn, $pos + mb_strlen($unit));
        }
        return $result;
    }

$moneyCn = "玖仟捌佰叁拾亿零壹拾捌万贰仟柒佰圆整";
echo convert2Number($moneyCn);//983000182700
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值