-
1Comment 1797views
最近在写金额小写转大写
结果在找到两段代码,一个是 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 1283views
Dreamhost 的 mail server 适用於 discuz 的设置
smtp 的设置如下
mail.domain.com
port 587
不开ssl
登入时要名称@domain.com
密码要设置
这样就能使用 Dreamhost 的 mail server 发信,
看来 Dreamhost 虽然不快,但是附加的价值高,
用了快10年,舍不得换啊!
最近接了个案子,做网络营销。
又干起站长架设论坛的工作了。
2014年7月28日 -
1Comment 2093views
2014 happy new year
新年快樂,
希望大家在新的一年裡心想事成,身體健康。
希望我自已在新的一年裡
1. 事業上有所突破。
2. 體重能減少一點
3. 生個小孩
2014年1月1日 -
5Comment 1946views
正在考虑,是不是尝试用 TP3.2 写新案子。
之前用 ThinkPHP都是尝试性的使用,而且主要是 CMS及采集内容。
这次的案子,有关使用者管理、代理商管理、竞猜管理、网站系统管理、采集管理。
案子大了许多,不知道用 ThinkPHP 的话,自已能不能完成,还是要找帮手呢?
2013年12月25日 -
0Comment 2168views
ThinkPHP 3.2 ajaxReturn + Jquery
参考以下
http://doc.thinkphp.cn/manual/ajax_return.html
ThinPHP 的输出
$data['info'] = '123';
$this->ajaxReturn($data,'JSON');
Jquery 收到的处理
$("form").submit(function(){var self = $(this);$.post(self.attr("action"), self.serialize(), success, "json");return false;function success(data){if(data.status){window.location.href = data.url;} else {self.find(".Validform_checktip").text(data.info);//刷新验证码$(".reloadverify").click();}}
主要在 data.* 的处理,
ajaxReturn 的数组可以对应到 JQ 的 data.* 。
2013年12月19日 -
1Comment 3608views
ThinkPHP 3.1.3 + 独立分组 + 泛解析 + 泛域名 + 取得子域名
废话少说,来步骤
1. DNS 增加 A 记录 *
2. Apache conf/Extra/httpd-vhost.conf
DocumentRoot "D:/AppServ/www"
ServerName admin.domain.com
ServerAlias *.domian.com
3. 公共 Conf/config.php
'APP_GROUP_LIST' => 'Index,Test,Admin',
'DEFAULT_GROUP' => 'Index',
'APP_GROUP_MODE' => 1,
'APP_GROUP_PATH' => 'Modules',
'APP_SUB_DOMAIN_DEPLOY' => 1,
4. Modules/Index/Action/IndexAction.class.php
<?php Class IndexAction extends Action { Public function index(){ echo '=='.SUB_DOMAIN; } } ?>
5. 刷新 sub.domian.com
输出 sub 子域名,成功。
刷任何子域名,皆成功。
2013年11月12日 -
ThinkPHP3.1快速入门 11.控制器高级特性
标题虽说是高级特性,但很新手应该要学会使用。
1. 开发时写的控制器,叫做业务控制器。开发时写出的控制器就叫业务控制器。
2. action 参数绑定。方便啊,省得再用 I 函数了。很多地方可以直接使用,别客气。别忘记默认值。
也有同学坚持要用 I 函数, 理由是这样才知道是参数来的,合理吗?
学长认为不尽合理,但能达成目的,学长也不加入争辩了。
3. 空模块和空操作
很有用的空模块,学长少少的经验里,比空操作常用。主要是错误页面的定位。
也有特殊用法,文档内已经讲得很详细了。
4. 前置 后置操作,不知道用在哪里,不知道为什麽不写在一起,前置+后置有什麽用?
已经在官网提问,没有回答。
5. 跳转和重定向,在比如登入时成功或失败 定向不同页面。
6. AJAX返回,在使用 Jquery 时用的就是 ajaxReturn 。
对一定程度的开发者来说,必用!
7. 页面请求类型
常常用来判断,是不是正常的请求方式。
8. 伪静态
需要多说吗?新手先不碰,有馀力再搞吧。
9. 多层控制器
学长有试著使用,觉得还不错。主要分别是事件控制器是专门给内部调用,不用担心不明人士的操作。
有很多人问我,为什麽不干脆自已写个教程?也有人觉得这些文章没什麽用处。
主要是这些文章,是对原文的补强,不是独立的教学文章。
反而学长比较喜欢写适合新手的案例,而不是教程。
2013年11月4日 -
网站原型图设计工具 Axure RP
官网
http://www.axure.org/
教程
悠识网教程
下载
Axure RP Pro(快速原型设计工具) V7.0.0.3126 汉化版
2013年11月2日 -
ThinkPHP3.1快速入门 9.变量输出
把变量从控制器输出到模版,新手必学。
1. 一开始的例子新手容易搞混,你没搞混是因为你不是新手。
$displayname= 'ThinkPHP';
$this->assign('name',$displayname);
$this->display();
在模板中使用 Hello,{$name}!
以上就不容易搞混了。
2. 新手没事别挑战
'TMPL_L_DELIM' => '<{',
'TMPL_R_DELIM' => '}>',
定义模版输出的标记,在不同系统整合出现冲突时有用。新手决对用不到。
你用到了,就已经不是新手的范围了。
3. 数组变量的输出,超常用。
{$data['name']}
{$data['email']}
以这种用法为主,其馀两种用法为辅。
4. 输出系统变量,偶尔用,但无可避免一定会用到, 多码几遍就熟用了。
5. 使用函数
一开始我排拆这种用法,但在某些情况下好用,但有人不认同。总之,后来我常用,见人见智。
默认值一定要记得。
6. 使用运算符
偶尔在画表格的时候,会用到。常不常用我不知道,反正有就用了。
2013年11月1日 -
ThinkPHP3.1快速入门 8.视图
1. 视图就是模板
2. 应尽量用独立分组而不是默认的分组。
APP_GROUP_MODE => 1,
APP_GROUP_PATH =>'Modules',
虽说是个人习惯问题,但我认为独立分组的结构更清淅,有利於维护或扩展。
3. 新手先了解模式定义、参数、主题目录结构。
DEFAULT_THEME
TMPL_TEMPLATE_SUFFIX
TMPL_FILE_DEPR
TMPL_PARSE_STRING
4. display 及 show 的用法、操作。
5. 模版赋值 assign 的使用。
6. 模版替换列出的特殊字符串已不适用。更改如下:
__PUBLIC__ : 替换成当前项目的公共模板目录地址
__ROOT__ : 替换成当前网站的根目录地址,不含域名。
__APP__ : 替换成当前项目的目录地址,不含域名
__GROUP__ : 替换成当前分组的目录地址,不含域名
__URL__ : 替换成当前模块的目录地址,不含域名
__ACTION__ : 替换成当前 Action 地址,不含域名
__SELF__ : 替换成当前页面
2013年10月31日
最新评论