/var/www/(Del)pathways.org.hk/MIS20140127/old20140414/student_invoice/20140516/changemoney_ver2.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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
<?php

//define 
//格式化货币 
function fmoney($num) {
    
$num $num;
    
$num sprintf("%.02f"$num);
    if (
strlen($num) <= 6)
        return 
$num;
//从最后开始算起,每3个数它加一个"," 
    
for ($i strlen($num) - 1$k 1$j 100$i >= 0$i--, $k++) {
        
$one_num substr($num$i1);
        if (
$one_num == ".") {
            
$numArray[$j--] = $one_num;
            
$k 0;
            continue;
        }

        if (
$k == and $i != 0) {
//如果正好只剩下3个数字,则不加',' 
            
$numArray[$j--] = $one_num;
            
$numArray[$j--] = ",";
            
$k 0;
        } else {
            
$numArray[$j--] = $one_num;
        }
    }
    
ksort($numArray);
    return 
join(""$numArray);
}

function 
umoney($num$type "usd") {
    global 
$numTable$commaTable$moneyType;

//global $numTable; 
    
$numTable[0] = "ZERO ";
    
$numTable[1] = "ONE ";
    
$numTable[2] = "TWO ";
    
$numTable[3] = "THREE ";
    
$numTable[4] = "FOUR ";
    
$numTable[5] = "FIVE ";
    
$numTable[6] = "SIX ";
    
$numTable[7] = "SEVEN ";
    
$numTable[8] = "EIGHT ";
    
$numTable[9] = "NINE ";
    
$numTable[10] = "TEN ";
    
$numTable[11] = "ELEVEN ";
    
$numTable[12] = "TWELVE ";
    
$numTable[13] = "THIRTEEN ";
    
$numTable[14] = "FOURTEEN ";
    
$numTable[15] = "FIFTEEN ";
    
$numTable[16] = "SIXTEEN ";
    
$numTable[17] = "SEVENTEEN ";
    
$numTable[18] = "EIGHTEEN ";
    
$numTable[19] = "NINETEEN ";
    
$numTable[20] = "TWENTY ";
    
$numTable[30] = "THIRTY ";
    
$numTable[40] = "FORTY ";
    
$numTable[50] = "FIFTY ";
    
$numTable[60] = "SIXTY ";
    
$numTable[70] = "SEVENTY ";
    
$numTable[80] = "EIGHTY ";
    
$numTable[90] = "NINETY ";

    
$commaTable[0] = "HUNDRED ";
    
$commaTable[1] = "THOUSAND ";
    
$commaTable[2] = "MILLION ";
    
$commaTable[3] = "MILLIARD ";
    
$commaTable[4] = "BILLION ";
    
$commaTable[5] = "????? ";

//单位 
    
$moneyType["usd"] = "DOLLARS ";
    
$moneyType["usd_1"] = "CENTS ONLY";
    
$moneyType["rmb"] = "YUAN ";
    
$moneyType["rmb_1"] = "FEN ONLY";


    if (
$type == "")
        
$type "usd";
    
$fnum fmoney($num);
    
$numArray explode(","$fnum);
    
$resultArray = array();
    
$k 0;
    
$cc count($numArray);
    for (
$i 0$i count($numArray); $i++) {
        
$num_str $numArray[$i];
        
//echo $num_str;
        //echo '<br>';
//小数位的处理400.21 
        
if (preg_match('/\./'$num_str)) {
            
$dotArray explode("."$num_str);
            if (
$dotArray[1] != 0) {
                
$resultArray[$k++] = format3num($dotArray[0] + 0);
                
$resultArray[$k++] = $moneyType[strtolower($type)];
                
$resultArray[$k++] = "AND ";
                
$resultArray[$k++] = format3num($dotArray[1] + 0);
                
$resultArray[$k++] = $moneyType[strtolower($type) . "_1"];
            } else {
                
$resultArray[$k++] = format3num($dotArray[0] + 0);
                
$resultArray[$k++] = $moneyType[strtolower($type)];
            }
        } else {
//非小数位的处理 
            
if (($num_str 0) != 0) {
                
$resultArray[$k++] = format3num($num_str 0);
                
$resultArray[$k++] = $commaTable[--$cc];
//判断:除小数外其余若不为零则加and 
                
for ($j $i$j <= $cc$j++) {
                    if (
$numArray[$j] !=&& $j != && $numArray[$cc] > ) {
                        
$resultArray[$k++] = "AND ";
                        break;
                    }
                }
            }
        }
    }
    return 
join(""$resultArray);
}

function 
format3num($num) {
    global 
$numTable$commaTable;
    
$numlen strlen($num);
    for (
$i 0$j 0$i $numlen$i++) {
        
$bitenum[$j++] = substr($num$i1);
    }
    if (
$num == 0)
        return 
"";
    if (
$numlen == 1)
        return 
$numTable[$num];
    if (
$numlen == 2) {
        if (
$num <= 20)
            return 
$numTable[$num];
//第一位不可能零 
        
if ($bitenum[1] == 0) {
            return 
$numTable[$num];
        } else {
            return 
trim($numTable[$bitenum[0] * 10]) . "-" $numTable[$bitenum[1]];
        }
    }
//第一个不可能为零 
    
if ($numlen == 3) {
        if (
$bitenum[1] == && $bitenum[2] == 0) {
//100 
            
return $numTable[$bitenum[0]] . $commaTable[0];
        } elseif (
$bitenum[1] == 0) {
//102 
            
return $numTable[$bitenum[0]] . $commaTable[0] . $numTable[$bitenum[2]];
        } elseif (
$bitenum[2] == 0) {
//120 
            
return $numTable[$bitenum[0]] . $commaTable[0] . $numTable[$bitenum[1] * 10];
        } else {
//123 
            
return $numTable[$bitenum[0]] . $commaTable[0] . trim($numTable[$bitenum[1] * 10]) . "-" $numTable[$bitenum[2]];
        }
    }
    return 
$num;
}