一串数字11123456009,把它翻译成“壹百壹十壹亿贰千叁百肆十伍万陆千零玖”
1 function get_money_read($num) {
2 if (!preg_match('/\d+/is', $num)) {
3 return FALSE;
4 }
5 $num_arr = array_chunk(preg_split('//', strrev(preg_replace('/0*([1-9]+)/is', '\1', $num)), -1, PREG_SPLIT_NO_EMPTY), 4);
6 $money_unit = array(
7 '',
8 '万',
9 '亿',
10 '兆'
11 );
12 foreach($num_arr as $key => $nums) {
13 $result = get_detail($nums, $money_unit[$key]) . $result;
14 }
15 return $result;
16 }
17
18 function get_detail($nums, $money) {
19 $money_name = array(
20 '',
21 '十',
22 '百',
23 '千'
24 );
25 $zero = FALSE;
26 foreach($nums as $key => $num) {
27 if (0 != $num) {
28 $result = num2name($num) . $money_name[$key] . $result;
29 $zero = FALSE;
30 } elseif (FALSE === $zero) {
31 $result = num2name($num) . $result;
32 $zero = TRUE;
33 }
34 }
35 return $result . $money;
36 }
37 function num2name($num) {
38 $nums = array(
39 '零',
40 '壹',
41 '贰',
42 '叁',
43 '肆',
44 '伍',
45 '陆',
46 '柒',
47 '捌',
48 '玖'
49 );
50 return $nums[$num];
51 }
52 echo get_money_read('11123456009');
53
2 if (!preg_match('/\d+/is', $num)) {
3 return FALSE;
4 }
5 $num_arr = array_chunk(preg_split('//', strrev(preg_replace('/0*([1-9]+)/is', '\1', $num)), -1, PREG_SPLIT_NO_EMPTY), 4);
6 $money_unit = array(
7 '',
8 '万',
9 '亿',
10 '兆'
11 );
12 foreach($num_arr as $key => $nums) {
13 $result = get_detail($nums, $money_unit[$key]) . $result;
14 }
15 return $result;
16 }
17
18 function get_detail($nums, $money) {
19 $money_name = array(
20 '',
21 '十',
22 '百',
23 '千'
24 );
25 $zero = FALSE;
26 foreach($nums as $key => $num) {
27 if (0 != $num) {
28 $result = num2name($num) . $money_name[$key] . $result;
29 $zero = FALSE;
30 } elseif (FALSE === $zero) {
31 $result = num2name($num) . $result;
32 $zero = TRUE;
33 }
34 }
35 return $result . $money;
36 }
37 function num2name($num) {
38 $nums = array(
39 '零',
40 '壹',
41 '贰',
42 '叁',
43 '肆',
44 '伍',
45 '陆',
46 '柒',
47 '捌',
48 '玖'
49 );
50 return $nums[$num];
51 }
52 echo get_money_read('11123456009');
53