PHP将数字金额替换为人民币中文大写的函数


PHP #函数2014-04-09 23:09

直接上代码。

01/**
02*数字金额转换成中文大写金额的函数 http://yige.org/
03*String Int  $num  要转换的小写数字或小写字符串
04*return 大写字母
05*小数位为两位
06**/
07function num_to_rmb($num){
08        $c1 = "零壹贰叁肆伍陆柒捌玖";
09        $c2 = "分角元拾佰仟万拾佰仟亿";
10        //精确到分后面就不要了,所以只留两个小数位
11        $num = round($num, 2);
12        //将数字转化为整数
13        $num = $num * 100;
14        if (strlen($num) > 10) {
15                return "金额太大,请检查";
16        }
17        $i = 0;
18        $c = "";
19        while (1) {
20                if ($i == 0) {
21                        //获取最后一位数字
22                        $n = substr($num, strlen($num)-1, 1);
23                } else {
24                        $n = $num % 10;
25                }
26                //每次将最后一位数字转化为中文
27                $p1 = substr($c1, 3 * $n, 3);
28                $p2 = substr($c2, 3 * $i, 3);
29                if ($n != '0' || ($n == '0' && ($p2 == '亿' || $p2 == '万' || $p2 == '元'))) {
30                        $c = $p1 . $p2 . $c;
31                } else {
32                        $c = $p1 . $c;
33                }
34                $i = $i + 1;
35                //去掉数字最后一位了
36                $num = $num / 10;
37                $num = (int)$num;
38                //结束循环
39                if ($num == 0) {
40                        break;
41                }
42        }
43        $j = 0;
44        $slen = strlen($c);
45        while ($j < $slen) {
46                //utf8一个汉字相当3个字符
47                $m = substr($c, $j, 6);
48                //处理数字中很多0的情况,每次循环去掉一个汉字“零”
49                if ($m == '零元' || $m == '零万' || $m == '零亿' || $m == '零零') {
50                        $left = substr($c, 0, $j);
51                        $right = substr($c, $j + 3);
52                        $c = $left . $right;
53                        $j = $j-3;
54                        $slen = $slen-3;
55                }
56                $j = $j + 3;
57        }
58        //这个是为了去掉类似23.0中最后一个“零”字
59        if (substr($c, strlen($c)-3, 3) == '零') {
60                $c = substr($c, 0, strlen($c)-3);
61        }
62        //将处理的汉字加上“整”
63        if (empty($c)) {
64                return "零元整";
65        }else{
66                return $c . "整";
67        }
68}


相关文章

粤ICP备11097351号-1