数字金额转大写文字
16lz
2021-04-27
php数字金额转大写文字函数,输入需要转换的金额,返回对应的文字
function num2upper($money, $type = false)
{
$result = '';
$money = strrev( (string)($money*100) );
$number = $type ? ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九']
: ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
$unit = $type ? ['分','角','元']
: ['分','角','圆'];
$unit2 = $type ? ['千', '万', '十', '百'] : ['仟', '万', '拾', '佰'];
//$unit2 = $type ? ['千', '万', '十', '百'] : ['拾', '佰' ,'仟', '万', ];
$money = (string)$money;
/** - - - - - - - 简单错误处理 - - - - - - **/
if ($money > 99999999999) return '金额过大,无法显示'; //最大值错误提醒;
if ($money == 0) return '零元整'; //0元简单处理;
if ($money < 0) return '金额错误,请联系管理员'; //最大值错误提醒;
$lenght = strlen($money);
for ($i = 0; $i < $lenght; $i++) {
$tmp = '';
// if ( $i != 0 && ($i < $lenght-1)最大位不可能为0 && $money[$i] == 0 && $money[$i+1] == 0) continue ;//跳过多个零
$tmp .= $number[ $money[$i] ]; //数字替换成文字
if ($i < 3) { //小额处理(元角分)
$tmp .= $unit[ $i ];
}else {
//分位不验证 当前数为零 下一位还是0
if ( $i != 0 && $money[$i] == 0 && $money[$i+1] == 0) {
continue ;//跳过多个零
}
if ( $money[$i] != 0 && $i != 10) $tmp .= $unit2[($i-1)%4]; //特殊处理亿元
else if ( $i == 6 ) $tmp .= '万';
else if ( $i == 10 ) $tmp .= '亿';
}
$result = $tmp . $result; //向前将金额文字排列
}
$result = str_replace('零角零分', '整', $result); //添加整字
$result = str_replace('零零圆', '圆', $result); //添加圆字
$result = str_replace('零圆', '圆', $result); //添加圆字
$result = str_replace('零零', '零', $result); //添加整字
$result = str_replace('零万', '万零', $result); //添加整字
$result = str_replace('零分', '', $result); //去掉零分
return $result;
}
更多相关文章
- JavaScript: 购物车全选自动计算金额和取消全选清零金额
- 【JavaScript案例】购物车全选和自动计算金额案例(附源码)及ES6模
- 0114 购物车计算金额
- PHP实现财务审核通过后返现金额到客户的源码分析
- 还玩什么ZAO换脸软件,首例AI诈骗案已经诞生了,涉案金额达175万
- Android——EditText金额输入控制位数(小数点前几位,小数点后几位)
- [置顶] Android(安卓)平板中 自定义键盘(popuwindow) 居于屏幕左
- android:两个进程之间通过AIDL进行通信
- Android(安卓)自定义View金额、价格样式显示MoneyView