刘懿东

博客园 首页 新随笔 联系 订阅 管理

一串数字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 

 

 

posted on 2010-09-16 13:39  yzxlyd  阅读(719)  评论(0编辑  收藏  举报