php如何把阿拉伯数字转为大写中文的数字?(代码示例)

来源:青灯夜游 发布时间:2018-11-23 11:28:39 阅读量:1069

本篇文章给大家带来的内容是介绍php如何把阿拉伯数字转为大写中文的数字?(代码示例)。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。

前言:之前在做一个外贸公司的询报价系统时用到了记录关于金额的数据,一般阿拉伯数字都需要转为银行使用的大写数字,在这简单记录一下

代码示例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

/*

 * 数字金额转换成中文大写金额的函数

 * String Int  $num  要转换的小写数字或小写字符串

 * return 大写数字

 */

public function num_to_rmb($num){

    $c1 = "零壹贰叁肆伍陆柒捌玖";

    $c2 = "分角元拾佰仟万拾佰仟亿";

    //精确到分后面就不要了,所以只留两个小数位

    $num = round($num, 2);

    //将数字转化为整数

    $num = $num * 100;

    if (strlen($num) > 10) {

        return "金额太大,请检查";

    }

    $i = 0;

    $c = "";

    while (1) {

        if ($i == 0) {

            //获取最后一位数字

            $n = substr($num, strlen($num)-1, 1);

        } else {

            $n = $num % 10;

        }

        //每次将最后一位数字转化为中文

        $p1 = substr($c1, 3 * $n, 3);

        $p2 = substr($c2, 3 * $i, 3);

        if ($n != '0' || ($n == '0' && ($p2 == '亿' || $p2 == '万' || $p2 == '元'))) {

            $c = $p1 . $p2 . $c;

        } else {

            $c = $p1 . $c;

        }

        $i = $i + 1;

        //去掉数字最后一位了

        $num = $num / 10;

        $num = (int)$num;

        //结束循环

        if ($num == 0) {

            break;

        }

    }

    $j = 0;

    $slen = strlen($c);

    while ($j < $slen) {

        //utf8一个汉字相当3个字符

        $m = substr($c, $j, 6);

        //处理数字中很多0的情况,每次循环去掉一个汉字“零”

        if ($m == '零元' || $m == '零万' || $m == '零亿' || $m == '零零') {

            $left = substr($c, 0, $j);

            $right = substr($c, $j + 3);

            $c = $left . $right;

            $j = $j-3;

            $slen = $slen-3;

        }

        $j = $j + 3;

    }

    //这个是为了去掉类似23.0中最后一个“零”字

    if (substr($c, strlen($c)-3, 3) == '零') {

        $c = substr($c, 0, strlen($c)-3);

    }

    //将处理的汉字加上“整”

    if (empty($c)) {

        return "零元整";

    }else{

        return $c . "整";

    }

}

//echo num_to_rmb(23000000.00); //贰仟叁佰万元整


标签: PHP
分享:
评论:
你还没有登录,请先