天天看点

学习PHP收集的几个有用函数

很有用的一些函数,你可以作为源码保存,然后以后避免重复编写。

  文件读取函数

  //文件读取函数   function PHP_Read($file_name) {   $fd=fopen($file_name,r);   while($bufline=fgets($fd, 4096)){   $buf.=$bufline;   }   fclose($fd);   return $buf;   }   ?>

  文件写入函数

  //文件写入函数   function PHP_Write($file_name,$data,$method="w") {   [email protected]($file_name,$method);   flock($filenum,LOCK_EX);   $file_data=fwrite($filenum,$data);   fclose($filenum);   return $file_data;   }   ?>

  静态页面生成函数

  //静态页面生成函数   function phptohtm($filefrom,$fileto,$u2u=1){   if($u2u==1){   $data=PHP_Read($filefrom);   }else{   $data=$filefrom;   }   PHP_Write($fileto,$data);   return true;   }   ?>

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

  //指定条件信息数量检索函数   function rec_exist($table,$where){   $query="select count(*) as num from $table ".$where;   $result=mysql_query($query) or die(nerror(1));   $rowcount=mysql_fetch_array($result);   $num=$rowcount["num"];   if ($num==0){   return false;   }   return $num;   }   ?>

  目录删除函数

  //目录删除函数   function del_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/$file ok ";   }   }   }   $mydir->close();   rmdir($directory);   //echo "rmdir $directory ok ";   }   ?>

  目录名称合法性检测函数

//目录名称合法性检测

  function isen($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;

  }

  ?>

  分页函数

  //分页函数   function splitlist($HALT,$LRLIST,$ECHOCNT,$paper,$table,$where,$page_id,$userid){   global $splitstr,$sumcnt;   if($paper=="" || $sumcnt==""){   $query = "select count(*) as num from $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(($LRLIST*2+1) < $sumpaper){   if(($paper-$LRLIST) < 2){   $tract=1;   $sub=$LRLIST*2+1;   }else if(($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="【 << "; }   else $splitstr="【 << ";   for($i=$tract;$i<=$sub;$i++){   if ($i!=$paper) $splitstr.="".$i." ";   else $splitstr.="".$i." ";   }   if ($sub!=$sumpaper) $splitstr.=">> 】";   else $splitstr.=">> 】";   return($where);   }   ?>

  关于分页函数的使用说明 

  ?>

  图片文件上传函数

  //图片文件上传函数   function upload_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); //恢复缺省超时设置   }   }   ?>

1.产生随机字符串函数

function random($length) { $hash = @#@#; $chars = @#ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz@#; $max = strlen($chars) - 1; mt_srand((double)microtime() * 1000000); for($i = 0; $i < $length; $i++) {  $hash .= $chars[mt_rand(0, $max)]; } return $hash; }

  2.截取一定长度的字符串

  注:该函数对GB2312使用有效

function wordscut($string, $length ,$sss=0) { if(strlen($string) > $length) {         if($sss){            $length=$length - 3;            $addstr=@# ...@#;         }  for($i = 0; $i < $length; $i++) {   if(ord($string[$i]) > 127) {   $wordscut .= $string[$i].$string[$i + 1];   $i++;   } else {   $wordscut .= $string[$i];   }  }  return $wordscut.$addstr; } return $string; }

  3.取得客户端IP地址

function GetIP(){        if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))           $ip = getenv("HTTP_CLIENT_IP");        else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))           $ip = getenv("HTTP_X_FORWARDED_FOR");        else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))           $ip = getenv("REMOTE_ADDR");        else if (isset($_SERVER[@#REMOTE_ADDR@#]) && $_SERVER[@#REMOTE_ADDR@#] && strcasecmp($_SERVER[@#REMOTE_ADDR@#], "unknown"))           $ip = $_SERVER[@#REMOTE_ADDR@#];        else          $ip = "unknown";        return($ip); }

  4.创建相应的文件夹

function createdir($dir=@#@#) {     if (!is_dir($dir))     {       $temp = explode(@#/@#,$dir);       $cur_dir = @#@#;       for($i=0;$i<count($temp);$i++)       {         $cur_dir .= $temp[$i].@#/@#;         if (!is_dir($cur_dir))         {         @mkdir($cur_dir,0777);         }       }     } }

  5.判断邮箱地址

function checkEmail($inAddress) { return (ereg("^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+",$inAddress)); }

  6.跳转

function gotourl($message=@#@#,$url=@#@#,$title=@#@#) {   $html ="<html><head>";   if(!empty($url))    $html .="<meta http-equiv=@#refresh@# content="3;url=@#".$url."@#">";   $html .="<link href=@#../templates/style.css@# type=text/css rel=stylesheet>";   $html .="</head><body><br><br><br><br>";   $html .="<table cellspacing=@#0@# cellpadding=@#0@# ; $html .="<tr><td bgcolor=@##ffffff@#>"; $html .="<table ; $html .="<tr class=@#m_title@#>"; $html .="<td>".$title."</td></tr>"; $html .="<tr class=@#line_1@#><td align=@#center@# height=@#60@#>"; $html .="<br>".$message."<br><br>";   if (!empty($url))    $html .="系统将在3秒后返回<br>如果您的浏览器不能自动返回,请点击[<a href=".$url." target="_blank" rel="external nofollow" target=_self>这里</a>]进入";   else    $html .="[<a href=@##@# onclick=@#history.go(-1)@#>返回</a>]";   $html .="</td></tr></table></td></tr></table>"; $html .="</body></html>"; echo $html; exit; }

  7.分页(两个函数配合使用)

function getpage($sql,$page_size=20) {    global $page,$totalpage,$sums; //out param    $page = $_GET["page"];    //$eachpage = $page_size;    $pagesql = strstr($sql," from ");    $pagesql = "select count(*) as ids ".$pagesql;    $result = mysql_query($pagesql);    if($rs = mysql_fetch_array($result)) $sums = $rs[0];    $totalpage = ceil($sums/$page_size);    if((!$page)||($page<1)) $page=1;   $startpos = ($page-1)*$page_size;   $sql .=" limit $startpos,$page_size ";   return $sql; } function showbar($string="") {     global $page,$totalpage; $out="共<font ".$totalpage."color=@#red@#><b>".$totalpage."</b></font>页 ";   $linkNum =4;   $start = ($page-round($linkNum/2))>0 ? ($page-round($linkNum/2)) : "1";   $end  = ($page+round($linkNum/2))<$totalpage ? ($page+round($linkNum/2)) : $totalpage;   $prestart=$start-1;   $nextend=$end+1;   if($page<>1) $out .= "<a href=@#?page=1&&".$string."@#title=第一页>第一页</a> ";   if($start>1) $out.="<a href=@#?page=".$prestart."@# title=上一页>..<<</a> "; for($t=$start;$t<=$end;$t++)   {    $out .= ($page==$t) ? "<font [".$t."]color=@#red@#><b>[".$t."]</b></font> " : "<a $thref=@#?page=$t&&".$string."@#>$t</a> ";   } if($end<$totalpage) $out.="<a href=@#?page=".$nextend."&&".$string."@# title=下一页>>>..</a>";   if($page<>$totalpage)   $out .= " <a href=@#?page=".$totalpage."&&".$string."@# title=最后页>最后页</a>";   return $out; }

  8.获取新插入数据的ID

<? mysql_insert_id(); ?>