几个很有用的文件操作php函数
几个很有用的文件操作php函数
文件读取函式
//文件读取函式
functionPHP_Read(file_name){
fd=fopen(file_name,r);
while(bufline=fgets(fd,4096)){
buf.=bufline;
}
fclose(fd);
returnbuf;
}
?>
文件写入函式
//文件写入函式
functionPHP_Write(file_name,data,method="w"){
filenum=@fopen(file_name,method);
flock(filenum,LOCK_EX);
file_data=fwrite(filenum,data);
fclose(filenum);
returnfile_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(*)asnumfromtable".where;
result=mysql_query(query)ordie(nerror(1));
rowcount=mysql_fetch_array(result);
num=rowcount["num"];
if(num==0){
returnfalse;
}
returnnum;
}
?>
目录删除函式
//目录删除函式
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"unlinkdirectory/fileok
";
}
}
}
mydir->close();
rmdir(directory);
//echo"rmdirdirectoryok
";
}
?>
目录名称合法性检测函式
//目录名称合法性检测
functionisen(str){
ret="";
for(i=0;ip=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);
}
returnret;
}
?>
分页函式
//分页函式
functionsplitlist(HALT,LRLIST,ECHOCNT,paper,table,where,page_id,userid){
globalsplitstr,sumcnt;
if(paper==""||sumcnt==""){
query="selectcount(*)asnumfromtablewhere";
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((LRLIST*2+1)<sumpaper){
if((paper-LRLIST)<2){
tract=1;
sub=LRLIST*2+1;
}elseif((paper+LRLIST)>=sumpaper){
tract=sumpaper-(LRLIST*2);
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="【<<";}
elsesplitstr="【<<";
for(i=tract;i<=sub;i++){
if(i!=paper)splitstr.="".i."";
elsesplitstr.="".i."";
}
if(sub!=sumpaper)splitstr.=">>】";
elsesplitstr.=">>】";
return(where);
}
?>
关于分页函式的使用说明
/*
####检索分页函式####
IntHALT-检索结果仅分1页时是否(1/0)显示页码条
IntLRLIST-(页码条显示页码数-1)/2
IntECHOCNT-检索时每页显示记录的数量
Intpaper-页数,预提取:paper=HTTP_GET_VARS[paper];
Varchartable-数据表名,预附值:table="db.table";
Varcharwhere-检索条件,预附值:where="wherefield=@#value@#";
Varcharenwhere-将原where进行两次base64_encode()编码后以GET的方式提交
Varcharsplitstr-页码条输出字串,执行函式后在相应的位置执行echosplitstr;
函式调用前需获取变量-
paper=HTTP_GET_VARS[paper];
sumcnt=HTTP_GET_VARS[sumcnt];
enwhere=HTTP_GET_VARS[enwhere];
Return(Varcharwhere)-分页后检索语句的检索条件
注意:本函式需调用出错处理函式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"/(1024*1024)),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);//恢复缺省超时设置
}
}
?>