一个不错的PHP下各种编码转换类
* 中文编码集合类库
*
* 目前该类库可以实现,简体中文 <-> 繁体中文编码互换,简体中文、繁体中文 -> 拼音单向转换,
* 简体中文、繁体中文 <-> UTF8 编码转换,简体中文、繁体中文 -> Unicode单向转换
Submitted by admin on 2008, June 20, 1:54 PM
一个不错的PHP下各种编码转换类
* 中文编码集合类库
*
* 目前该类库可以实现,简体中文 <-> 繁体中文编码互换,简体中文、繁体中文 -> 拼音单向转换,
* 简体中文、繁体中文 <-> UTF8 编码转换,简体中文、繁体中文 -> Unicode单向转换
附件: chinese.rar (126.71 K, 下载次数:87)
Submitted by admin on 2008, June 18, 12:56 PM
从php5.10开始,php中加入了时区的设置,在php中显示的时间都是格林威治标准时间,这就造成了我们中国的用户会差八个小时的问题!
相关设置是修改php.ini中的 date.timezone 参数:
[Date]
; Defines the default timezone used by the date functions
;date.timezone =
默认是关闭的,只需把注释去掉,改为即可
[Date]
; Defines the default timezone used by the date functions
date.timezone = PRC
其中PRC是“中华人民共和国”!
其他选项可以参考php手册。
不过这上面的亚洲地区漏掉了我们的首都北京,不知道老外是不是故意的!
如果没有修改php.ini的权限,只需要在调用时间日期函数的时候,调用 date_default_timezone_set(’PRC’) 即可!
也可以调用date_default_timezone_get()来查看当前的时区设置!
關於XXX,大陸內地可用的值是:
Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi (依次為重慶,上海,烏魯木齊)
港台地區可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次為澳門,香港,台北)
台灣地区可設為:date.timezone = "Asia//Taipei"
還有新加坡:Asia/Singapore
Submitted by admin on 2008, June 14, 1:18 AM
在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只能返回它的目标字段,而无法返回其它字段,这个问题让我困扰了很久,用distinct不能解决的话,我只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的。所以我花了很多时间来研究这个问题,网上也查不到解决方案,期间把容容拉来帮忙,结果是我们两人都郁闷了。。。。。。。。。
下面先来看看例子:
table
id name
1 a
2 b
3 c
4 c
5 b
库结构大概这样,这只是一个简单的例子,实际情况会复杂得多。
比如我想用一条语句查询得到name不重复的所有数据,那就必须使用distinct去掉多余的重复记录。
select distinct name from table
得到的结果是:
name
a
b
c
好像达到效果了,可是,我想要得到的是id值呢?改一下查询语句吧:
select distinct name, id from table
结果会是:
id name
1 a
2 b
3 c
4 c
5 b
distinct怎么没起作用?作用是起了的,不过他同时作用了两个字段,也就是必须得id与name都相同的才会被排除。。。。。。。
我们再改改查询语句:
select id, distinct name from table
很遗憾,除了错误信息你什么也得不到,distinct必须放在开头。难到不能把distinct放到where条件里?能,照样报错。。。。。。。
很麻烦吧?确实,费尽心思都没能解决这个问题。没办法,继续找人问。
拉住公司里一JAVA程序员,他给我演示了oracle里使用distinct之后,也没找到mysql里的解决方案,最后下班之前他建议我试试group by。
试了半天,也不行,最后在mysql手册里找到一个用法,用group_concat(distinct name)配合group by name实现了我所需要的功能,兴奋,天佑我也,赶快试试。
报错。。。。。。。。。。。。郁闷。。。。。。。连mysql手册也跟我过不去,先给了我希望,然后又把我推向失望,好狠哪。。。。
再仔细一查,group_concat函数是4.1支持,晕,我4.0的。没办法,升级,升完级一试,成功。。。。。。
终于搞定了,不过这样一来,又必须要求客户也升级了。
突然灵机一闪,既然可以使用group_concat函数,那其它函数能行吗?
赶紧用count函数一试,成功,我。。。。。。。想哭啊,费了这么多工夫。。。。。。。。原来就这么简单。。。。。。
现在将完整语句放出:
select *, count(distinct name) from table group by name
结果:
id name count(distinct name)
1 a 1
2 b 1
3 c 1
最后一项是多余的,不用管就行了,目的达到。。。。。
唉,原来mysql这么笨,轻轻一下就把他骗过去了,郁闷也就我吧(对了,还有容容那家伙),现在拿出来希望大家不要被这问题折腾。
哦,对,再顺便说一句,group by 必须放在 order by 和 limit之前,不然会报错,差不多了,发给容容放网站上去,我继续忙碌。。。。。。
-----------------------------------------------------------------------------------------
更郁闷的事情发生了,在准备提交时容容发现,有更简单的解决方法。。。。。。
select id, name from table group by name
看来对mysql的了解还是太肤浅了,不怕被笑话,发出来让大家别犯同样的错误。。。。。。
by 索尔
原文 http://www.phpv.net/html/1501.html
这篇文章帮了我个很大的忙,帮我解决了我想了一个下午和晚上都没解决的问题,就一个group by name给解决了."看来对mysql的了解还是太肤浅了"
Submitted by admin on 2008, June 11, 4:16 PM
开始:
1、使用双网卡。一块连接外,一块连接内网.连接外网的网卡标识rl1,连接内网的为rl0
(因为我2块网卡都是REALTEK8139的,所以网卡标识为rl,1和0是两块网卡的区别号)
2、在/etc/rc.conf中加上:
ifconfig_rl1="inet 218.92.251.108 netmask 255.225.225.0"
##(对外网卡的设置,很显然,218.92.251.108为静态IP地址。255.255.255.0子网掩码。不懂?我颠~)
ifconfig_rl0="inet 192.168.0.1 netmask 255.255.255.0"
##(对内网卡IP地址以及子网掩码的设置)
##以上加进rc.conf是为了再每次开机的时候配置好两块网卡的IP地址等。
firewall_enable="NO" #取消防火墙
gateway_enable="YES" ##启用网关功能,很显然,很重要。
named_enable="YES" ##启用DNS名字服务,这样可以让内网通过设置主机做DNS
natd_enable="YES" ##启用nat功能,很显然,特重要
natd_interface="rl1" ##设置NAT转发的网卡标识号,rl1为对外连接网卡。相当于###WIN2000里的连接共享设置的那块网卡连接。
3,设置/etc/ipnat.conf
map rl1 192.168.0.0/24 ->; 218.92.251.108/32 portmap tcp/udp 10000:65000
map rl1 192.168.0.0/24 ->; 218.92.251.108/32
##以上是设置允许共享连接的内网IP范围,很显然,24精确到最后一位!也就是说###192.168.0.*的子机都可以通过这台主机上网。
4,设定开机自动执行ipnat。
#cd /usr/local/etc/rc.d
#vi runipnat.sh
##加入以下内容:
#!/bin/sh
/sbin/ipnat -f /etc/ipnat.conf
#chmod 755 runipnat.sh ##权限设为可执行。
5、设置内核,至关重要!
因为ipfw和ipfilter不能共存,所以如果要使用ipfilter,必须将内核中有关ipfw的部份注释掉
#cd /usr/src/sys/i386/conf ##/usr/src/sys/i386/conf是内核文件所在目录
#cp GENERIC DWOLF ##备份内核文件GENERIC
#grep -i IPFIREWALL DWOLF ##查找:IPFIREWALL,如果找到,就加"#"注释掉:
#vi DWOLF ##vi编辑,也可以用ee编辑器
#options IPFIREWALL
#options IPDIVERT
##再加入:
options IPFILTER
options IPFILTER_LOG
##保存!
#config DWOLF ##检查有没有错误
#cd /usr/src
#make kernel KERNCONF=DWOLF ##编译内核
#reboot
##重起以后打dmesg查看启动信息,我看到有一条
IP Filter: v3.4.31 initialized. Default = pass all, Logging = enabled
#ipnat -l ## 显示ipnat的设定状况
map rl1 192.168.0.0/24 ->; 218.92.251.108/32 portmap tcp/udp 10000:65000
map rl1 192.168.0.0/24 ->; 218.92.251.108/32
呵呵,搞定!
试试内网机器能不能上网,(测试,可省略)
PING 192.168.0.1 成功连接主机,OK!
PING mdxy.3322.org 解析到IP地址,DNS OK!
PING 218.92.251.122 PING通外网主机,OK!(注意,因为8月中旬全国ISO升级,禁止ICMP数据包,路由器外的IP一般都不给PING,你可以找一个自己可以PING通的外网IP,或者省略这一步,无所谓)
==附录几个常用的IPNAT命令
ipnat -l 会列出目前ipnat的设定及状况
ipnat -C 清除ipnat的设定
ipfstat 监测数据的流量
Submitted by admin on 2008, June 9, 11:55 PM
mysql> SELECT * FROM table1,table2 WHERE table1.id=table2.id;
mysql> SELECT * FROM table1 LEFT JOIN table2 ON table1.id=table2.id;
mysql> SELECT * FROM table1 LEFT JOIN table2 USING (id);
mysql> SELECT * FROM table1 LEFT JOIN table2 ON table1.id=table2.id
-> LEFT JOIN table3 ON table2.id=table3.id;
mysql> SELECT * FROM table1 USE INDEX (key1,key2)
-> WHERE key1=1 AND key2=2 AND key3=3;
mysql> SELECT * FROM table1 IGNORE INDEX (key3)
-> WHERE key1=1 AND key2=2 AND key3=3;
Submitted by admin on 2008, June 6, 12:39 AM
模板制作帮助文档
http://www.dedecms.com/archives/templethelp/help/index.htm
1、默认底层模板
位置: cmspath/templets/system
功能:在没有指定标记的默认底层模板的时候,系统将自动调用这个文件夹的相应文件作为底层模板。
2、插件目录模板
位置: cmspath/templets/plus
功能:评论、友情链接、RSS地图等模板。
3、会员后台模板
位置: cmspath/member/templets
功能:会员后台的模板。
二次开发
DedeCms主要的模板解析类是 include/inc_arcpart_view.php、include/inc_arclist_view.php、include/inc_archives_view.php,这些
类是与pub_dedetag.php一起工作的,如果你想为文档模板、列表模板、板块模板增加一些功能,可以直接修改这几个类的ParseTemplet()或
ParseTempletsFirst()这类的方法,把标记名称,属性对应试相应该的功能函数即时。
Dedecms标记入门(新手必读的模板教程)
http://bbs.dedecms.com/read.php?fid=4&tid=51186
Dedecms模型增加字段教程
http://bbs.dedecms.com/read.php?tid=40780
在网站首页调用显示最新加入企业
http://bbs.dedecms.com/read.php?tid=41172
http://www.yoursite.cn/?action=show&id=189
自定义宏标记的应用
http://bbs.dedecms.com/read.php?tid=23661
添加关键字链接的详细说明以及问题
http://bbs.dedecms.com/read.php?tid=59517
Dedecms默认模板用户评论扩展
http://bbs.dedecms.com/read.php?tid=50280
{dede:arclist}的学习心得,如何调用文章或者软件,你想调用的任何字段[已成功]
http://bbs.dedecms.com/read.php?tid=32358&fpage=3
如何得到当前 文章/栏目 对应的一级栏目id [似乎已解决]
http://bbs.dedecms.com/read.php?tid=1073&
DEDE V5一个简单实现栏目文章数统计的方法
http://bbs.dedecms.com/read.php?tid=61947
function @me用法总结 自定义函数
http://www.yoursite.cn/?action=show&id=187
【SQL标记】推荐会员(带用户头像)调用方法
http://bbs.dedecms.com/read.php?tid=55616
首页调用会员头像排列怎么才能让间隙均衡?
http://bbs.dedecms.com/read.php?tid=59976
【4.0】修改让自定义标记支持position,title
http://bbs.dedecms.com/read.php?tid=15855
技巧和教程帮助文档索引【08.05.13整理】
http://bbs.dedecms.com/read.php?tid=60818
dedecms2007RC1 BUG修正及修改汇总贴
http://bbs.dedecms.com/read.php?tid=39793
Submitted by admin on 2008, June 5, 7:10 PM
Submitted by admin on 2008, June 4, 3:18 PM
sed -e '编辑指令1' -e '编辑指令2' ... 文件档
其中 , 所有编辑指令都紧接在选项 -e 之後 , 并置於两个 " ' " 特殊字元间。
另外 , 命令上编辑指令的执行是由左而右。
一般编辑指令不多时 , 使用者通常直接在命令上执行它们。例如 , 删除 yel.
dat 内 1 至 10 行资料 , 并将其
馀文字中的 "yellow" 字串改成 "black" 字串。此时 , 可将编辑指令直接在命
令上执行 , 其命令如下 :
sed -e '1,10d' -e 's/yellow/black/g' yel.dat
在命令中 , 编辑指令 '1,10d'(解[5])执行删除 1 至 10 行资料 ; 编辑指令
's/yellow/black/g'(解[6]) ,
2.2.1 位址(address)参数的表示法
实际上 , 位址参数表示法只是将要编辑的资料行 , 用它们的行数或其中的字串
来代替表示它们。下面举几个例子
说明(指令都以函数参数 d(参照[section4.2]) 为例) :
删除档内第 10 行资料 , 则指令为 10d。
删除含有 "man" 字串的资料行时 , 则指令为 /man/d。
删除档内第 10 行到第 200 行资料, 则指令为 10,200d。
执行多个文件档的编辑
在 sed 命令列上 , 一次可执行编辑多个文件档 , 它们跟在编辑指令之後。例
如 , 替换
white.dat、red.dat、black.dat 档内的 "yellow" 字串成 "blue" , 其命令
如下:
sed -e 's/yellow/blue/g' white.dat red.dat black.dat
上述命令执行时 , sed 依 white.dat、red.dat、black.dat 顺序 , 执行编辑指
令 s/yellow/blue/(请参照[section 4.1] ,
进行字串的替换。
对t.txt文件内容前加上#
sed -i -e 's/^/#/' t.txt
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
把config里的enforcing替换为disabled
sed -i -e '/alias vi=vim/d' /root/.bashrc
删除所有含有"alias vi=vim"的行
sed -i -e 's/alias vi=vim//g' /root/.bashrc
替换所有"alias vi=vim"串为空,也即是删除
sed -i "8 s/^/alias vi='vim'/" /root/.bashrc
在第8行增加"alias vi='vim'"
sed -i -e 's/^LANG=.*/LANG="zh_CN.GB18030"/' /etc/sysconfig/i18n
将LANG开头的行替换为LANG="zh_CN.GB18030"
sed -i '205 s#;open_basedir =#open_basedir = /data/www/wwwroot:/tmp#g' /usr/local/Zend/etc/php.ini
把 ;open_basedir = 替换为 open_basedir = /data/www/wwwroot:/tmp
sed -i '205 s#open_basedir = /data/www/wwwroot:/tmp#;open_basedir =#g' /usr/local/Zend/etc/php.ini