如何把大写金额转换成阿拉伯数字金额(PHP)
本文介绍了如何把大写金额转换成阿拉伯数字金额(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屋!
查看全文