如何把大写金额转换成阿拉伯数字金额(PHP)

查看:180
本文介绍了如何把大写金额转换成阿拉伯数字金额(PHP)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

例如:

  • 贰佰亿壹仟万零壹圆整 --->20010000001

  • 玖仟捌佰叁拾亿零壹拾捌万贰仟柒佰圆整 ---> 983000182700

解决方案

还是要考虑一下单位,大写两个以上的零会写成一个零,这个也需要考虑:

<?php
// $moneyCn = "贰亿零壹拾万叁仟零壹圆";// 200103001
$moneyCn = "玖仟捌佰叁拾亿零壹拾捌万贰仟柒佰圆整";//983000182700
//贰佰亿壹仟万零壹圆整 --->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;
}

echo convert2Number($moneyCn);

这篇关于如何把大写金额转换成阿拉伯数字金额(PHP)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆