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 {//分位不验证 当前数为零 下一位还是0if ( $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;}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号