标题:PHP:数字转换人民币大写金额 出处:Felix021 时间:Sat, 21 May 2011 23:20:19 +0000 作者:felix021 地址:https://www.felix021.com/blog/read.php?2014 内容: 支持到 万亿,精确到角分。 0) { $x = $num % 10; if ($x == 0) $arr_str[] = $_NUMS[0]; else $arr_str[] = $_NUMS[$x] . $unit[$i]; $num = floor($num / 10); $i++; } $arr_str = array_reverse($arr_str); $str = join("", $arr_str); $str = preg_replace('/(零)+/', '零', $str); $str = preg_replace('/零$/', '', $str); return $str; } function rmb($amount) { //去除开头的空格、正负号、前导0、小数点、符号 $amount = preg_replace('/(^\s*(\+|-)?0*)|\.|¥/', '', $amount); if ($amount == '') return '零元整'; if (strlen($amount) == 1) $amount = '0' . $amount; $int_part = substr($amount, 0, '-2'); $float_part = substr($amount, -2); $jiao = intval($float_part{0}); $fen = intval($float_part{1}); $unit = array('', '万', '亿', '万'); while (strlen($int_part) % 4 != 0) $int_part = '0' . $int_part; $groups = str_split($int_part, 4); $groups = array_reverse($groups); //print_r($groups); $arr_str = array(); for ($i = 0; $i < count($groups); $i++) { $arr_str[] = four_num($groups[$i]) . $unit[$i]; if ($groups[$i] < 1000) $arr_str[] = '零'; } $arr_str = array_reverse($arr_str); //print_r($arr_str); $ret = join('', $arr_str); $ret = preg_replace('/^(零)+/', '', $ret); $ret = preg_replace('/(零)+/', '零', $ret); $ret = preg_replace('/零万/', '', $ret); $ret = preg_replace('/零亿/', '亿', $ret); $ret = preg_replace('/(零)$/', '', $ret); if ($ret !== '') $ret .= '元'; if ($float_part == 0) { $ret .= '整'; } else { global $_NUMS; if ($ret !== '' && ($groups[0] % 10 == 0 || $jiao == 0)) { $ret .= '零'; } if ($jiao != 0) $ret .= $_NUMS[$jiao] . '角'; if ($fen != 0) $ret .= $_NUMS[$fen] . '分'; } return $ret; } //TEST CASE case_test("壹仟肆佰零玖元伍角", rmb('1409.50')); case_test("陆仟零柒元壹角肆分", rmb('6007.14')); case_test("壹仟陆佰捌拾元零叁角贰分", rmb('1680.32')); case_test("壹拾万柒仟元零伍角叁分", rmb('107000.53')); case_test("壹万陆仟肆佰零玖元零贰分", rmb('16409.02')); case_test("叁佰贰拾伍元零肆分", rmb('325.04')); case_test("壹亿壹仟元零叁角", rmb('10000100030')); function case_test($stdans, $ans) { if ($stdans == $ans) echo "TEST OK\n"; else echo "$stdans <==> $ans\n"; } ?> Generated by Bo-blog 2.1.0