首页 > 后端开发 > PHP问题 > php 汉字怎么转阿拉伯数

php 汉字怎么转阿拉伯数

藏色散人
发布: 2023-03-13 16:06:01
原创
1578 人浏览过

php汉字转阿拉伯数的方法:1、创建一个PHP示例文件;2、初始化一个数组;3、将字符串按单位切分;4、将分组后的字符串转化成数字并乘以单位即可。

php 汉字怎么转阿拉伯数

本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑

php 汉字怎么转阿拉伯数?

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

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

function ch2num($str){

    //单位数组用于循环遍历,单位顺序从大到小

    $c = [

        '万亿'=>1000000000000,

        '亿' => 100000000,

        '万' => 10000,

    ];

    //中文替换数字规则,零没什么卵用;所以去掉

    $b = [

        '一' =>1,

        '二' =>2,   

        '三' =>3,

        '四' =>4,

        '五' =>5,

        '六' =>6,

        '七' =>7,

        '八' =>8,

        '九' =>9,

        '零' =>'',

    ];

    //替换数字

    $str str_replace(array_keys($b), array_values($b), $str);

    //结果 7百7十8万亿4千7百2十亿7千5百7十万4千4百8十

  //如果字符串以十开头,前边加1

    if(mb_strpos($str, '十' ,0 ,'utf-8') === 0)

        $str = '1'.$str;

      

    //初始化一个数组

    $arr[] = array(

        'str'    => $str, //字符串

        'unit'  => 1,     //单位

    );

    //将字符串按单位切分

    foreach ($c as $key => $value) {

        $brr = [];

        foreach ($arr as $item) {

            if(strpos($item['str'], $key)){

                $sun = explode($key, $item['str'],2);

                $brr[] = [

                    'str' => $sun[0],

                    'unit' => $value,

                ];

                $brr[] = [

                    'str' => $sun[1],

                    'unit' => $item['unit'],

                ];

            }else{

                $brr[] = $item;

            }

        }

        $arr = $brr;

    }

    /*    结果

        (

        [0] => Array

            (

                [str] => 7百7十8

                [unit] => 1000000000000

            )

        [1] => Array

            (

                [str] => 4千7百2十

                [unit] => 100000000

            )

        [2] => Array

            (

                [str] => 7千5百7十

                [unit] => 10000

            )

        [3] => Array

            (

                [str] => 4千4百8十6

                [unit] => 1

            )

        )*/

    //遍历求和

    $sum = 0;

    foreach ($arr as $item) {

        $sum += getNum($item['str'],$item['unit']);

    }

    return $sum;

}

//将分组后的字符串转化成数字,并乘以单位

function getNum($str,$st){

    //倍数

    $a = [

        '千'=>1000,

        '百'=>100,

        '十'=>10

    ];

    //开始值

    $num = 0;

    //当前值所在位数

    $step = 1;

    //单位

    $un = 1;

    $arr =  preg_split(&#39;/(?<!^)(?!$)/u&#39;, $str);

    while (count($arr)) {

        $m = array_pop($arr);

        //如果是位数;更新倍数

        if(!empty($a[$m])){

            $step = $a[$m];

        }

        if(is_numeric($m)){

            $num += $m * $step;

        }

    }

    return $num * $st;

}

登录后复制

 

推荐学习:《PHP视频教程

 

以上是php 汉字怎么转阿拉伯数的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板