表单FORM与GET方法的区别

发表于 2009-07-27 19:07

表单提交中Get和Post方式的区别有5点

分类: PHP | 阅读全文

PHP和MySQL操作应该注意的一些细节

发表于 2009-07-27 18:07

对于 MySQL ,第一件你必须牢记的是它的每一行命令都是用分号 (;) 作为结束的,但……没有完全绝对的事,在这儿也是一样。

分类: PHP | 阅读全文

判断一数是否在一已知数组中的函数

发表于 2009-07-27 17:07

bool in_array ( mixed needle, array haystack [, bool strict])

在 haystack 中搜索 needle,如果找到则返回 TRUE,否则返回 FALSE。

如果第三个参数 strict 的值为 TRUE 则 in_array() 函数还会检查 needle 的类型是否和 haystack 中的相同。

注: 如果 needle 是字符串,则比较是区分大小写的。

注: 在 PHP 版本 4.2.0 之前,needle 不允许是一个数组。

例子 1. in_array() 例子

以下为引用的内容:
$os = array ("Mac", "NT", "Irix", "Linux");
if (in_array ("Irix", $os)) {
print "Got Irix";
}
if (in_array ("mac", $os)) {
print "Got mac";
}
分类: PHP | 阅读全文

举例说明ASP和PHP一些相同之处

发表于 2009-07-27 15:07

什么是ASP?

分类: PHP | 阅读全文

你或许尚未了解PHP的那10件事情

发表于 2009-07-27 15:07

1.使用 ip2long() 和 long2ip() 函数来把 IP 地址转化成整型存储到数据库里。这种方法把存储空间降到了接近四分之一(char(15) 的 15 个字节对整形的 4 个字节),计算一个特定的地址是不是在一个区段内页更简单了,而且加快了搜索和排序的速度(虽然有时仅仅是快了一点)。

分类: PHP | 阅读全文

直接返回数组的方法是最慢的

发表于 2009-07-27 15:07

缓存文件,大家用的最多的估计就是 return array();

分类: PHP | 阅读全文

PHP一些常用的正则表达式

发表于 2009-07-27 13:07

匹配中文字符的正则表达式:[\u4e00-\u9fa5]

匹配双字节字符(包括汉字在内):[^\x00-\xff]

应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

String.prototype.len=function(){returnthis.replace([^\x00-\xff]/g,”aa”).length;}
匹配空行的正则表达式:\n[\s|]*\r

匹配HTML标记的正则表达式:/<(.*)>.*<\/>|<(.*)\/>/

匹配首尾空格的正则表达式:(^\s*)|(\s*$)

应用:javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现,如下:

String.prototype.trim=function(){
returnthis.replace(/(^\s*)|(\s*$)/g,”");
}
利用正则表达式分解和转换IP地址:

下面是利用正则表达式匹配IP地址,并将IP地址转换成对应数值的javascript程序:

functionIP2V(ip){
re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g//匹配IP地址的正则表达式
if(re.test(ip)){
returnRegExp.*Math.pow(255,3))+RegExp.*Math.pow(255,2))+RegExp.*255+RegExp.*1
}
else{
thrownewError(“NotavalidIPaddress!”)
}
}
不过上面的程序如果不用正则表达式,而直接用split函数来分解可能更简单,程序如下:

varip=”10.100.20.168″
ip=ip.split(“.”)
alert(“IP值是:”+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

匹配网址URL的正则表达式:http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?

利用正则表达式去除字串中重复的字符的算法程序:

vars=”abacabefgeeii”
vars1=s.replace(/(.).*/g,”")
varre=newRegExp(“["+s1+"]“,”g”)
vars2=s.replace(re,”")
alert(s1+s2)//结果为:abcefgi
用正则表达式从URL地址中提取文件名的javascript程序,如下结果为page1

s=”http://www.9499.net/page1.htm”
s=s.replace(/(.*\/)([^\.]+).*/ig,”")
alert(s)
利用正则表达式限制网页表单里的文本框输入内容:

用正则表达式限制只能输入中文:

onkeyup=”value=value.replace(/[^\u4E00-\u9FA5]/g,”)”
用正则表达式限制只能输入全角字符:

onkeyup=”value=value.replace(/[^\uFF00-\uFFFF]/g,”)”
用正则表达式限制只能输入数字:

onkeyup=”value=value.replace(/[^\d]/g,”)”onbeforepaste=”clipboardData.setData(‘text’,clipboardData.getData(‘text’).replace(/[^\d]/g,”))”
用正则表达式限制只能输入数字和英文:

onkeyup=”value=value.replace(/[\W]/g,”)”onbeforepaste=”clipboardData.setData(‘text’,clipboardData.getData(‘text’).replace(/[^\d]/g,”))”

分类: PHP | 阅读全文

PHP生成静态页面详解

发表于 2009-07-27 10:29

我们先回顾一些基本的概念。
  一,PHP脚本与动态页面。

  PHP脚本是一种服务器端脚本程序,可通过嵌入等方法与HTML文件混合,也可以类,函数封装等形式,以模板的方式对用户请求进行处理。无论以何种方式,它的基本原理是这样的。

分类: LAMP, PHP | 阅读全文

简单学习php遇到的主要问题

发表于 2009-07-27 07:07

到今天为止第一个php写的网站已经快要见亮了,中午后台部分全部功能完成意味着以后做别的站可以拿来就用,不用再费太多精力编写了,现在就简单写写学习php的这一个月我遇到的主要问题。

分类: PHP | 阅读全文

让你的PHP引擎全速运转的三个绝招

发表于 2009-07-27 07:07

作为流行的Web编程语言,PHP的最大优势就是速度。PHP4已经在这方面做的非常好了,你几乎找不到比它更快的脚本编程语言了。但是如果你的应用负荷很大,而带宽又比较小,或者有其他的瓶颈影响你的服务器性能,那么,你不妨试试笔者为你开出的几个药方,看看是否灵验。

一、代码优化

一谈到代码优化,或许你想到的就是整齐明了的代码,但是本文的意思却不是在此,因为如果要寻求速度的话,就要对PHP源码作相应的调整。一般说来就是去掉多余的注释,让代码不可读。但是这对于一个具有良好素养的程序员来说,简直就是不可思议的。好在ZendTechnologies公司发布了Zend优化引擎可以帮助你做到这一点。它现在是免费的,但是你必须遵循ZendOptimizer许可。这个产品可以对引擎产生的中间代码进行优化。

安装这个引擎比较简单,下载对应平台的版本以后,解开压缩文件,然后在php.ini文件里面加上下面两行,重新启动Web服务器,就搞定了。

zend_optimizer.optimization_level=15

zend_extension=”/path/to/ZendOptimizer.so”

zend_loader.enable=Off

如果是Win32平台的话就应该是:

zend_optimizer.optimization_level=15

zend_extension_ts=”C:\\path\\to\\ZendOptimizer.dll”

zend_loader.enable=Off

啊!没有搞错吧?怎么是三行?其实第三行是可选的。因为看起来把zend_loader关掉能提高一点速度,因此值得把这第三行放到php.ini。需要注意的是,关掉的前提条件是你没有在使用Zend加密程序。

二、缓冲

如果想要更进一步提升速度,我们就需要考虑采用缓冲技术了。有一些可选的解决方案,包括ZendCache(测试版本),APC,以及AfterburnerCache,另外还有jpCache等。

以上这些都是属于缓冲模块,他们把第一次对.php文件请求产生的中间代码存储在Web服务器的内存中,然后对以后的请求返回“编译好”的版本。因为这样减少了磁盘读写,而且都在内存工作,所以这个过程能显著提升应用性能,

现成的这类产品比较多,到底选择谁呢?

ZendCache是一款不错的商业产品,在第一次加载那些很大的PHP页面后,你会明显感受到速度的提升,服务器会留出更多的资源。可惜这个产品是要花银子的,但是在有些情形下,你可不要吝啬这些银子。

AfterburnerCache是BwareTechnologies的产品,目前还处于Beta版本,看起来似乎和ZendCashe一样,但是它不能达到ZendCache那样好的效果,也不能和Zend优化引擎一起工作,但是它是免费的,所以我采用了这个模块。

APC(AlternativePHPCache)是CommunityConnect发布的又一个免费模块,看起来似乎可以用于生产环境了。

三、Web内容压缩

对于日益拥挤的网络来说,节约带宽就像节约用水一样是十分值得提倡的。根据IETF标准,大多数浏览器应该支持使用gzip压缩的内容。也就是说你可以把用gzip压缩的内容发送给浏览器,浏览器会透明的解压数据。

mod_gzip是RemoteCommunications公司推出的免费Apache模块,能把静态的Web内容压缩后发送给浏览器。对于大多数静态网页来说,这个模块十分合适。尽管

Remotecommunications公司的人说这个模块支持所有那些mod_php,mod_perl,mod什么产生的动态内容,但是看起来还是不能工作,从mod_gzip的邮件列表来看,这个问题估计要到1.3.14.6f才能解决。

如果要压缩动态内容的话,我们可以采用class.gzip_encode.php,一个在脚本开始和结束时使用的PHP类。对整个网站来说就是在php.ini的auto_prepend和auto_append中调用其中的函数。详细你可以阅读这个类的程序,这个程序注释得很好,作者几乎把什么都告诉你了。不过使用之前,你的PHP要编译为支持zlib。

对于PHP4.0.4来说,一个新的解决方案就是使用ob_gzhandler,能达到和上面的类一样的效果,只要简单的在php.ini加入下面这句话就可以了:

output_handler=ob_gzhandler;

这能让PHP激活输出缓冲,并压缩所有输出。如果有什么特殊的理由不想让所有的内容都压缩输出的话,可以采用在.htaccess文件中加入下面的行,对对应目录下的文件进行压缩。

php_valueoutput_handlerob_gzhandler

也可以直接在PHP代码中加入:

ob_start(“ob_gzhandler”);

这项压缩技术十分有效,但是对NetscapeCommunicator用户来说,因为不能压缩图形文件,所以看上去没有完整的发送,因此必须关闭对jpeg和gif文件的压缩,IE没有这个问题。

结论:

采用本文所讨论的技术应该能改善你的网站性能,但是需要注意的是:

-PHP可能不是导致瓶颈的原因,仔细检查其他原因(例如:数据库)

-你不可能把服务器性能调节到最高状态。因此在埋怨PHP及其缓冲之前,考虑是否该升级服务器了,或者采用动态负载平衡技术(那可是一大笔银子哦)。

-不要低估内容压缩,在你100Mb的内部网上面看到PHP应用的速度提升时,不要忘记使用调制解调器的用户在哪里埋怨你的100Kb的HTML页面

分类: PHP | 阅读全文