205 views / 2010.06.02 / 2:02 下午
这个函数用来把数字转换为人民币大写格式,经过测试已经接近完美。如果有bug,欢迎反馈!
function toCNFormat($data) {
$data = strpos($data, ".") === false? $data . ".00":$data;
if (!preg_match("/^[0-9\.]+$/", $data))return "";
$capnum = array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖");
$capdigit = array("", "拾", "佰", "仟");
$subdata = explode(".", $data);
$yuan = $subdata[0];
$j = 0;
$nonzero = 0;
for($i = 0;$i < strlen($subdata[0]);$i++) {
if (0 == $i) {
if ($subdata[1]) {
$cncap = substr($subdata[0], -1, 1) != 0?"元":"元零";
} else {
$cncap = "元";
}
}
if (4 == $i) {
$j = 0;
$nonzero = 0;
$cncap = "万" . $cncap;
}
if (8 == $i) {
$j = 0;
$nonzero = 0;
$cncap = "亿" . $cncap;
}
$numb = substr($yuan, -1, 1);
$cncap = ($numb)?$capnum[$numb] . $capdigit[$j] . $cncap:(($nonzero)?"零" . $cncap:$cncap);
$nonzero = ($numb)?1:$nonzero;
$yuan = substr($yuan, 0, strlen($yuan)-1);
$j++;
}
if ($subdata[1]) {
$chiao = substr($subdata[1], 0, 1)?$capnum[substr($subdata[1], 0, 1)] . "角":"零";
$cent = substr($subdata[1], 1, 1)?$capnum[substr($subdata[1], 1, 1)] . "分":"";
}
$cncap .= $chiao . $cent . "整";
$cncap = preg_replace("/(零)+/", "<a href="file://\\1">\\1</a>", $cncap);
$cncap = str_replace("零整", "整", $cncap);
return $cncap;
}
echo toCNFormat("110502.35");
371 views / 2010.05.10 / 10:10 上午
这里解释下config.php中的配置信息,供大家配置时候使用
$seccodedata['type'] = 0; //0英文图片验证码 1中文图片验证码 2Flash 验证码 3语音验证码
$seccodedata['width'] = 150;//验证码宽度
$seccodedata['height'] = 60;;//验证码高度
$seccodedata['background'] = 1;//是否需要随机背景
$seccodedata['adulterate'] = 1;//是否随机混淆
$seccodedata['ttf'] = 1;//使用ttf字体
$seccodedata['angle'] = 1;//自动旋转
$seccodedata['color'] = 1;//随机颜色
$seccodedata['size'] = 1;//字体随机大小
$seccodedata['shadow'] = 1;//添加字体阴影
$seccodedata['animator'] = 1;//这个是关键,能动的gif验证码
$timestamp = time();
$_DCOOKIE = array();
$seccode = 0;
$charset = "GBK";
$GLOBALS['auth_key'] = "duyipeng";//这个越复杂越好,算是密钥
define("_SITE_ROOT_",dirname(__FILE__)."/");
define("_SESSION_PATH_",_SITE_ROOT_."session");
session_save_path(_SESSION_PATH_);
session_start();
//这里定义session回收命令 定义seesion存储路径是为了方便多台机器部署
index.php+test.php是测试例子。
个人感觉这个验证码便于阅读,又不容易被破解,很不错。
ps.不要使用cookie,不然容易被cc.
下载地址:http://cid-7826486a7f7dc8a9.skydrive.live.com/self.aspx/.Public/seccode.rar 解压密码:www.71j.cn
511 views / 2010.04.19 / 5:05 下午
在mysql下,在进行like检索时,有时候会返回一些与查询词不相关的记录,如查找 “%s%” 时,返回的结果中可能有中文字符,却没有s字符存在,这与数据库中文编码规则有关
如希望查找title中含有字母s的所有新闻:
select * from test.news where title like '%s%'
返回的结果中有一些包含s,而有些则只有中文,很郁闷(也很邪恶,嘿嘿)。
测试了下,发现一种解决方法,就是使用 BINARY(是CAST(str AS BINARY)简短写法) 强制转换进行检索
select * from test.news where binary title like '%s%'
这样结果就比较准确了,但还有一个问题,就是字母区分大小写,检索的时候依然不正确,只好再转化一下了:
select * from test.news where binary ucase(title) like '%s%'
如此,临时解决办法搞定,不过速度会变慢,希望以后的mysql版本能解决掉此问题。
387 views / 2010.03.24 / 4:04 下午
大家都知道,google退出中国后,国内GFW对google进行了更加严密的监控,如果你所在的网络有人(包括你自己)搜索了屏蔽词,你在一段时间内就无法进行搜索,确实很烦心。
这里与大家分享一个临时解决办法:
首先ping一下你机器g.cn解析的ip地址,我这边是203.208.39.99,然后修改hosts文件,添加如下规则
203.208.39.99 www.google.com www.google.com.hk
然后重启浏览器,试试吧
434 views / 2010.03.22 / 2:02 下午
如果你不知道tablespaces(表空间),你一定会问这到底是NND什么玩意儿,居然会出现在这么多数据库中。其实很简单,tablespaces是为了维持数据库高效运行而附加的一些逻辑条件。
在oracle和mysql中,tablespaces用来存储一些诸如表和索引的数据段,而在postgres中,一个tablespac是一个物理单元,是一个连接到特定目录的符号连接,它不能运行在不支持符号连接的操作系统,如windows.
实际上,数据文件是oracle和mysql的物理存储机制,虽然postgres也把表数据存在独立文件中,但它支持的表空间非常小。因此,更加合理的把数据分发到磁盘上能够使oracle和mysql的性能更上一层楼, tablespaces正是为了这种合理分发数据方法便于操作而诞生的。
Oracle和mysql创建tablespace的语法基本相同,oracle支持更多的参数,且在一个tablespace允许由多个数据文件组成。下面是一个在mysql下创建和使用tablespace的简单示例:
mysql> create tablespace myts
-> add datafile 'myfirstfile'
-> engine = falcon;
Query OK, 0 rows affected (0.48 sec)
mysql> create table testmyts (
-> abc integer )
-> tablespace myts;
Query OK, 0 rows affected (0.11 sec)
简单说明下,第一条命令是创建一个名字为myts的tablespace, 赋给它的文件名字为myfirstfile,当然我们要使用falcon引擎(介绍),运行完这个命令后,就会在mysql数据存储目录中发现一个名为myfirstfile的文件。
第二条命令是用这个tablespace创建一个表,这时候你再看那个tablespace文件,是不是变大了呢?如果没有,向这个表中多插入几条数据再看看。
在oracle中创建表结构,和mysql类似,也很简单:
SQL> create tablespace myts
datafile 'myfirstfile'
size 10M;
Tablespace created.
SQL> create table testmyts (
abc integer )
tablespace myts;
Table created.
SQL>
在oracle中,我们无需声明引擎类型,但要声明存储大小。我们可以创建一个小体积的存储空间,然后使用autoextend让其自动扩展,但是这个存储大小是必须要初始化的。