-
1Comment 2221views
最近在写金额小写转大写
结果在找到两段代码,一个是 PHP 一个是 JS ,很高兴不用自已再重写
不知道哪个好用。
贴上来备忘一下
第一段 php
<!--?php /** * 人民币小写转大写 * @param string $number 数值 * @param string $int_unit 币种单位,默认"元",有的需求可能为"圆" * @param bool $is_round 是否对小数进行四舍五入 * @param bool $is_extra_zero 是否对整数部分以0结尾,小数存在的数字附加0,比如1960.30, * 有的系统要求输出"壹仟玖佰陆拾元零叁角",实际上"壹仟玖佰陆拾元叁角"也是对的 * @return string */ function num2rmb($number = 0, $int_unit = '元', $is_round = true, $is_extra_zero = false) { // 将数字切分成两段 $parts = explode('.', $number, 2); $int = isset($parts[0]) ? strval($parts[0]) : '0'; $dec = isset($parts[1]) ? strval($parts[1]) : ''; // 如果小数点后多于2位,不四舍五入就直接截,否则就处理 $dec_len = strlen($dec); if (isset($parts[1]) && $dec_len --> 2) { $dec = $is_round ? substr(strrchr(strval(round(floatval("0." . $dec), 2)), '.'), 1) : substr($parts[1], 0, 2); } // 当number为0.001时,小数点后的金额为0元 if (emptyempty($int) && emptyempty($dec)) { return '零'; } // 定义 $chs = array('0', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'); $uni = array('', '拾', '佰', '仟'); $dec_uni = array('角', '分'); $exp = array('', '万'); $res = ''; // 整数部分从右向左找 for ($i = strlen($int) - 1, $k = 0; $i >= 0; $k++) { $str = ''; // 按照中文读写习惯,每4个字为一段进行转化,i一直在减 for ($j = 0; $j < 4 && $i >= 0; $j++, $i--) { $u = $int{$i} > 0 ? $uni[$j] : ''; // 非0的数字后面添加单位 $str = $chs[$int{$i}] . $u . $str; } // echo $str."|".($k - 2)."<br>"; $str = rtrim($str, '0'); // 去掉末尾的0 $str = preg_replace("/0+/", "零", $str); // 替换多个连续的0 if (!isset($exp[$k])) { $exp[$k] = $exp[$k - 2] . '亿'; // 构建单位 } $u2 = $str != '' ? $exp[$k] : ''; $res = $str . $u2 . $res; } // 如果小数部分处理完之后是00,需要处理下 $dec = rtrim($dec, '0'); // 小数部分从左向右找 if (!emptyempty($dec)) { $res .= $int_unit; // 是否要在整数部分以0结尾的数字后附加0,有的系统有这要求 if ($is_extra_zero) { if (substr($int, -1) === '0') { $res .= '零'; } } for ($i = 0, $cnt = strlen($dec); $i < $cnt; $i++) { $u = $dec{$i} > 0 ? $dec_uni[$i] : ''; // 非0的数字后面添加单位 $res .= $chs[$dec{$i}] . $u; } $res = rtrim($res, '0'); // 去掉末尾的0 $res = preg_replace("/0+/", "零", $res); // 替换多个连续的0 } else { $res .= $int_unit . '整'; } return $number < 0 ? "(负)" . $res : $res; } ?>
另一段 JSfunction Arabia_to_Chinese(Num){ for(i=Num.length-1;i>=0;i--) { Num = Num.replace(",","") Num = Num.replace(" ","") } Num = Num.replace("¥","") if(isNaN(Num)) { alert("请检查小写金额是否正确"); return; } part = String(Num).split("."); newchar = ""; for(i=part[0].length-1;i>=0;i--){ if(part[0].length > 10){ alert("位数过大,无法计算");return "";} tmpnewchar = "" perchar = part[0].charAt(i); switch(perchar){ case "0": tmpnewchar="零" + tmpnewchar ;break; case "1": tmpnewchar="壹" + tmpnewchar ;break; case "2": tmpnewchar="贰" + tmpnewchar ;break; case "3": tmpnewchar="叁" + tmpnewchar ;break; case "4": tmpnewchar="肆" + tmpnewchar ;break; case "5": tmpnewchar="伍" + tmpnewchar ;break; case "6": tmpnewchar="陆" + tmpnewchar ;break; case "7": tmpnewchar="柒" + tmpnewchar ;break; case "8": tmpnewchar="捌" + tmpnewchar ;break; case "9": tmpnewchar="玖" + tmpnewchar ;break; } switch(part[0].length-i-1){ case 0: tmpnewchar = tmpnewchar +"元" ;break; case 1: if(perchar!=0)tmpnewchar= tmpnewchar +"拾" ;break; case 2: if(perchar!=0)tmpnewchar= tmpnewchar +"佰" ;break; case 3: if(perchar!=0)tmpnewchar= tmpnewchar +"仟" ;break; case 4: tmpnewchar= tmpnewchar +"万" ;break; case 5: if(perchar!=0)tmpnewchar= tmpnewchar +"拾" ;break; case 6: if(perchar!=0)tmpnewchar= tmpnewchar +"佰" ;break; case 7: if(perchar!=0)tmpnewchar= tmpnewchar +"仟" ;break; case 8: tmpnewchar= tmpnewchar +"亿" ;break; case 9: tmpnewchar= tmpnewchar +"拾" ;break; } newchar = tmpnewchar + newchar; } if(Num.indexOf(".")!=-1){ if(part[1].length > 2) { part[1] = part[1].substr(0,2) } for(i=0;i<part[1].length;i++){ tmpnewchar = "" perchar = part[1].charAt(i) switch(perchar){ case "0": tmpnewchar="零" + tmpnewchar ;break; case "1": tmpnewchar="壹" + tmpnewchar ;break; case "2": tmpnewchar="贰" + tmpnewchar ;break; case "3": tmpnewchar="叁" + tmpnewchar ;break; case "4": tmpnewchar="肆" + tmpnewchar ;break; case "5": tmpnewchar="伍" + tmpnewchar ;break; case "6": tmpnewchar="陆" + tmpnewchar ;break; case "7": tmpnewchar="柒" + tmpnewchar ;break; case "8": tmpnewchar="捌" + tmpnewchar ;break; case "9": tmpnewchar="玖" + tmpnewchar ;break; } if(i==0)tmpnewchar =tmpnewchar + "角"; if(i==1)tmpnewchar = tmpnewchar + "分"; newchar = newchar + tmpnewchar; } } while(newchar.search("零零") != -1) newchar = newchar.replace("零零", "零"); newchar = newchar.replace("零亿", "亿"); newchar = newchar.replace("亿万", "亿"); newchar = newchar.replace("零万", "万"); newchar = newchar.replace("零元", "元"); newchar = newchar.replace("零角", ""); newchar = newchar.replace("零分", ""); if (newchar.charAt(newchar.length-1) == "元" || newchar.charAt(newchar.length-1) == "角") newchar = newchar+"整" return newchar; }
2014年8月18日 -
0Comment 1438views
Dreamhost 的 mail server 适用於 discuz 的设置
smtp 的设置如下
mail.domain.com
port 587
不开ssl
登入时要名称@domain.com
密码要设置
这样就能使用 Dreamhost 的 mail server 发信,
看来 Dreamhost 虽然不快,但是附加的价值高,
用了快10年,舍不得换啊!
最近接了个案子,做网络营销。
又干起站长架设论坛的工作了。
2014年7月28日 -
5Comment 2457views
正在考虑,是不是尝试用 TP3.2 写新案子。
之前用 ThinkPHP都是尝试性的使用,而且主要是 CMS及采集内容。
这次的案子,有关使用者管理、代理商管理、竞猜管理、网站系统管理、采集管理。
案子大了许多,不知道用 ThinkPHP 的话,自已能不能完成,还是要找帮手呢?
2013年12月25日 -
网站原型图设计工具 Axure RP
官网
http://www.axure.org/
教程
悠识网教程
下载
Axure RP Pro(快速原型设计工具) V7.0.0.3126 汉化版
2013年11月2日
最新评论