配色: 字号:
PHP 常用函数库和一些实用小技巧
2012-08-31 | 阅:  转:  |  分享 
  
文件读取函式

//文件读取函式

functionPHP_Read($file_name){

$fd=fopen($file_name,r);

while($bufline=fgets($fd,4096)){

$buf.=$bufline;

}

fclose($fd);

return$buf;

}

?>

文件写入函式

//文件写入函式

functionPHP_Write($file_name,$data,$method="w"){

$filenum=@fopen($file_name,$method);

flock($filenum,LOCK_EX);

$file_data=fwrite($filenum,$data);

fclose($filenum);

return$file_data;

}

?>

静态页面生成函式

//静态页面生成函式

functionphptohtm($filefrom,$fileto,$u2u=1){

if($u2u==1){

$data=PHP_Read($filefrom);

}else{

$data=$filefrom;

}

PHP_Write($fileto,$data);

returntrue;

}

?>

指定条件信息数量检索函式

//指定条件信息数量检索函式

functionrec_exist($table,$where){

$query="selectcount()asnumfrom$table".$where;

$result=mysql_query($query)ordie(nerror(1));

$rowcount=mysql_fetch_array($result);

$num=$rowcount["num"];

if($num==0){

returnfalse;

}

return$num;

}

?>

目录删除函式

//目录删除函式

functiondel_DIR($directory){

$mydir=dir($directory);

while($file=$mydir->read()){

if((is_dir("$directory/$file"))AND($file!=".")AND($file!="..")){

del_DIR("$directory/$file");

}else{

if(($file!=".")AND($file!="..")){

unlink("$directory/$file");

//echo"unlink$directory/$fileok";

}

}

}

$mydir->close();

rmdir($directory);

//echo"rmdir$directoryok";

}

?>

目录名称合法性检测函式

//目录名称合法性检测

functionisen($str){

$ret="";

for($i=0;$i$p=ord(substr($str,$i,1));

if(($p<48&$p!=45&$p!=46)||($p>57&$p<65)||($p>90&$p<97&$p!=95)||$p>122){

nerror("不符合规范!");

}

$ret.=chr($p);

}

return$ret;

}

?>

分页函式

//分页函式

functionsplitlist($HALT,$LRLIST,$ECHOCNT,$paper,$table,$where,$page_id,$userid){

global$splitstr,$sumcnt;

if($paper==""||$sumcnt==""){

$query="selectcount()asnumfrom$table$where";

$result=mysql_query($query);

$row=mysql_fetch_array($result);

$sumcnt=$row["num"];

if($sumcnt==0){

nerror("该版内还没有选择发布新闻!");

}

$paper=1;

}

$sumpaper=($sumcnt-$sumcnt%$ECHOCNT)/$ECHOCNT;

if(($sumcnt%$ECHOCNT)!=0)$sumpaper+=1;

if($sumpaper==1&&$HALT==0)return($where);

$enwhere=base64_encode(base64_encode($where));

if(($LRLIST2+1)<$sumpaper){

if(($paper-$LRLIST)<2){

$tract=1;

$sub=$LRLIST2+1;

}elseif(($paper+$LRLIST)>=$sumpaper){

$tract=$sumpaper-($LRLIST2);

$sub=$sumpaper;

}else{

$tract=$paper-$LRLIST;

$sub=$paper+$LRLIST;

}

}else{

$tract=1;

$sub=$sumpaper;

}

$uppaper=$paper-1;

$downpaper=$paper+1;

$startcnt=($paper-1)$ECHOCNT;

$where.="limit${startcnt},${ECHOCNT}";

if($tract>1){$splitstr="【<<";}

else$splitstr="【<<";

for($i=$tract;$i<=$sub;$i++){

if($i!=$paper)$splitstr.="".$i."";

else$splitstr.="".$i."";

}

if($sub!=$sumpaper)$splitstr.=">>】";

else$splitstr.=">>】";

return($where);

}

?>

关于分页函式的使用说明

/

####检索分页函式####

Int$HALT-检索结果仅分1页时是否(1/0)显示页码条

Int$LRLIST-(页码条显示页码数-1)/2

Int$ECHOCNT-检索时每页显示记录的数量

Int$paper-页数,预提取:$paper=$HTTP_GET_VARS[paper];

Varchar$table-数据表名,预附值:$table="db.table";

Varchar$where-检索条件,预附值:$where="wherefield=''value''";

Varchar$enwhere-将原$where进行两次base64_encode()编码后以GET的方式提交

Varchar$splitstr-页码条输出字串,执行函式后在相应的位置执行echo$splitstr;

函式调用前需获取变量-

$paper=$HTTP_GET_VARS[paper];

$sumcnt=$HTTP_GET_VARS[sumcnt];

$enwhere=$HTTP_GET_VARS[enwhere];

Return(Varchar$where)-分页后检索语句的检索条件

注意:本函式需调用出错处理函式nerror($error);

/

图片文件上传函式

//图片文件上传函式

functionupload_img($UploadFile,$UploadFile_name,$UploadFile_size,$UploadPath,$max_size=64){

//$TimeLimit=60;//设置超时限制时间缺省时间为30秒设置为0时为不限时

//set_time_limit($TimeLimit);

if(($UploadFile!="none")&&($UploadFile!="")){

$FileName=$UploadPath.$UploadFile_name;

if($UploadFile_size<1024){

$FileSize="(string)$UploadFile_size"."字节";

}elseif($UploadFile_size<(1024$max_size)){

$FileSize=number_format((double)($UploadFile_size/1024),1)."KB";

}else{

nerror("文件超过限制大小!");

}

//{

//$FileSize="number_format((double)($UploadFile_size"/(10241024)),1)."MB";

//}

if(!file_exists($FileName)){

if(copy($UploadFile,$FileName)){

return"$UploadFile_name($FileSize)";

}else{

nerror("文件$UploadFile_name上载失败!");

}

unlink($UploadFile);

}else{

nerror("文件$UploadFile_name已经存在!");

}

//set_time_limit(30);//恢复缺省超时设置

}

}

以下是一些小技巧:

如何判断ip地址合法性

if(!strcmp(long2ip(sprintf("%u",ip2long($ip))),$ip))echo"isipn";

----

email的正则判断

eregi("^[_.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z_-]+.)+[a-zA-Z]$",$email);

检测ip地址和mask是否合法的例子

$ip=''192.168.0.84'';

$mask=''255.255.255.0'';

$network=''192.168.0'';

$ip=ip2long($ip);

$mask=ip2long($mask);

$network=ip2long($network);

if(($ip&$mask)==$network)echo"validipandmaskn";

?>

----

文件下载头部输出如何设定

header("Content-type:application/x-download");

header("Content-Disposition:attachment;filename=$file_download_name;");

header("Accept-Ranges:bytes");

header("Content-Length:$download_size");

echo''xxx''

用header输出ftp下载方式,并且支持断点续传

一个例子:

header(''Pragma:public'');

header(''Cache-Control:private'');

header(''Cache-Control:no-cache,must-revalidate'');

header(''Accept-Ranges:bytes'');

header(''Connection:close'');

header("Content-Type:audio/mpeg");

header("Location:ftp://download:1bk3l4s3k9s2@232.2.22.22/2222/web技术开发知识库/cn_web.rmvb");

正则匹配中文

ereg("^[".chr(0xa1)."-".chr(0xff)."]+$",$str);

批量替换文本里面的超级链接

functionurlParse($str=''''){

if(''''==$str)return$str;

$types=array("http","ftp","https");

$replace=<<

''''.htmlentities(''\1'').htmlentities(''\2'').''''

EOPHP;

$ret=$str;

while(list(,$type)=each($types)){

$ret=preg_replace("|($type://)([^\s])|ie",$replace,$ret);

}

return$ret;

}

详细出处参考:http://www.jb51.net/article/17017.htm













































献花(0)
+1
(本文系此处茂林修...首藏)