zl程序教程

您现在的位置是:首页 >  后端

当前栏目

一些php项目中比较通用的php自建函数的详解

PHP项目 详解 函数 比较 一些 通用 自建
2023-06-13 09:15:01 时间
以下一些php函数是我们it动力最常用的项目开发函数,这些函数还算是在比较多的项目中使用到的,也是比较通用的。
1.请求接口的处理函数
复制代码代码如下:

/**
 *curl访问程序接口
 *@paramstring
 *@returnarray
 */ 
functiongetCurlDate($url,$datas,$key){ 
   $datas["time"]=$_SERVER["REQUEST_TIME"]+300; 
   $post_data["post"]=urlencode(authcode(serialize($datas),"ENCODE",$key)); 
//   echo$url; 
   $ch=curl_init(); 
   curl_setopt($ch,CURLOPT_URL,$url); 
   curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
   //我们在POST数据哦! 
   curl_setopt($ch,CURLOPT_POST,1); 
   //把post的变量加上 
   curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data); 
   $output=curl_exec($ch); 
 //  dump(curl_error($ch)); 
   curl_close($ch); 
   returnjson_decode($output,true); 


2.获取文件扩展名
复制代码代码如下:

/**
 *@获取文件扩展名
 *@$picstring图片路径
 */ 
functionget_file_ext($pic){ 
   returnsubstr($pic,strrpos($pic,".")+1); 


3.可逆的加密、解密函数
复制代码代码如下:
/**
 *字符串加密
 *@param  $string    需加密的字符
 *@param  $operation 加密或解密
 *@param  $key       网站加密key,防止破解
 *@return string
 */ 
functionauthcode($string,$operation="DECODE",$key="",$expiry=0){ 
   $ckey_length=4; 
   $key=md5($key?$key:"^www.itokit.com$"); 
   $keya=md5(substr($key,0,16)); 
   $keyb=md5(substr($key,16,16)); 
   $keyc=$ckey_length?($operation=="DECODE"?substr($string,0,$ckey_length):substr(md5(microtime()),-$ckey_length)):""; 

   $cryptkey=$keya.md5($keya.$keyc); 
   $key_length=strlen($cryptkey); 

   $string=$operation=="DECODE"?base64_decode(substr($string,$ckey_length)):sprintf("%010d",$expiry?$expiry+time():0).substr(md5($string.$keyb),0,16).$string; 
   $string_length=strlen($string); 

   $result=""; 
   $box=range(0,255); 

   $rndkey=array(); 
   for($i=0;$i<=255;$i++){ 
       $rndkey[$i]=ord($cryptkey[$i%$key_length]); 
   } 

   for($j=$i=0;$i<256;$i++){ 
       $j=($j+$box[$i]+$rndkey[$i])%256; 
       $tmp=$box[$i]; 
       $box[$i]=$box[$j]; 
       $box[$j]=$tmp; 
   } 

   for($a=$j=$i=0;$i<$string_length;$i++){ 
       $a=($a+1)%256; 
       $j=($j+$box[$a])%256; 
       $tmp=$box[$a]; 
       $box[$a]=$box[$j]; 
       $box[$j]=$tmp; 
       $result.=chr(ord($string[$i])^($box[($box[$a]+$box[$j])%256])); 
   } 

   if($operation=="DECODE"){ 
       if((substr($result,0,10)==0||substr($result,0,10)-time()>0)&&substr($result,10,16)==substr(md5(substr($result,26).$keyb),0,16)){ 
           returnsubstr($result,26); 
       }else{ 
           return""; 
       } 
   }else{ 
       return$keyc.str_replace("=","",base64_encode($result)); 
   } 


4.字符串转十六进制
复制代码代码如下:
/**
*字符串转十六进制
*@paramunknown_type$s
*/ 
functionstr2hex($s){ 
 $r=""; 
 $hexes=array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"); 
 for($i=0;$i<strlen($s);$i++) 
 $r.=($hexes[(ord($s{$i})>>4)].$hexes[(ord($s{$i})&0xf)]); 
 return$r; 
}

5.十六进制转字符串
复制代码代码如下:
/**
*十六进制转字符串
*@paramunknown_type$s
*/ 
functionhex2str($s){ 
 $r=""; 
 for($i=0;$i<strlen($s);$i+=2) 
 { 
   $x1=ord($s{$i}); 
   $x1=($x1>=48&&$x1<58)?$x1-48:$x1-97+10; 
   $x2=ord($s{$i+1}); 
   $x2=($x2>=48&&$x2<58)?$x2-48:$x2-97+10; 
   $r.=chr((($x1<<4)&0xf0)|($x2&0x0f)); 
 } 
 return$r; 


6.返回经addslashes处理过的字符串或数组
复制代码代码如下:
/**
*返回经addslashes处理过的字符串或数组
*@param$string需要处理的字符串或数组
*@returnmixed
*/ 
functionnew_addslashes($string){ 
 if(!is_array($string))returnaddslashes($string); 
 foreach($stringas$key=>$val)$string[$key]=new_addslashes($val); 
 return$string; 


/**/ 
functionaddslashes_deep($string) 

 returnis_array($string)?array_map("addslashes_deep",$string):addslashes($string); 


7.返回经stripslashes处理过的字符串或数组
复制代码代码如下:
/**
*返回经stripslashes处理过的字符串或数组
*@param$string需要处理的字符串或数组
*@returnmixed
*/ 
functionnew_stripslashes($string){ 
 if(!is_array($string))returnstripslashes($string); 
 foreach($stringas$key=>$val)$string[$key]=new_stripslashes($val); 
 return$string; 

/**/ 
functionstripslashes_deep($string) 

 returnis_array($string)?array_map("stripslashes_deep",$string):stripslashes($string); 


8.返回经htmlspecialchars处理过的字符串或数组
复制代码代码如下:
/**
*返回经htmlspecialchars处理过的字符串或数组
*@param$string需要处理的字符串或数组
*@returnmixed
*/ 
functionnew_html_special_chars($string){ 
 if(!is_array($string))returnhtmlspecialchars($string); 
 foreach($stringas$key=>$val)$string[$key]=new_html_special_chars($val); 
 return$string; 


9.获取请求ip
复制代码代码如下:
/**
 *获取请求ip
 *
 *@returnip地址
 */ 
functionip(){ 
 if(getenv("HTTP_CLIENT_IP")&&strcasecmp(getenv("HTTP_CLIENT_IP"),"unknown")){ 
   $ip=getenv("HTTP_CLIENT_IP"); 
 }elseif(getenv("HTTP_X_FORWARDED_FOR")&&strcasecmp(getenv("HTTP_X_FORWARDED_FOR"),"unknown")){ 
   $ip=getenv("HTTP_X_FORWARDED_FOR"); 
 }elseif(getenv("REMOTE_ADDR")&&strcasecmp(getenv("REMOTE_ADDR"),"unknown")){ 
   $ip=getenv("REMOTE_ADDR"); 
 }elseif(isset($_SERVER["REMOTE_ADDR"])&&$_SERVER["REMOTE_ADDR"]&&strcasecmp($_SERVER["REMOTE_ADDR"],"unknown")){ 
   $ip=$_SERVER["REMOTE_ADDR"]; 
 } 
 returnpreg_match("/[\d\.]{7,15}/",$ip,$matches)?$matches[0]:""; 


10.字符截取支持UTF8/GBK
复制代码代码如下:
/**
*字符截取支持UTF8/GBK
*@param$string
*@param$length
*@param$dot
*/ 
functionstr_cut($string,$length,$dot="..."){ 
 $strlen=strlen($string); 
 if($strlen<=$length)return$string; 
 $string=str_replace(array("","","&",""",""","“","”","—","<",">","·","…"),array("∵","","&",""",""","“","”","—","<",">","·","…"),$string); 
 $strcut=""; 
 if(strtolower(CHARSET)=="utf-8"){ 
   $length=intval($length-strlen($dot)-$length/3); 
   $n=$tn=$noc=0; 
   while($n<strlen($string)){ 
     $t=ord($string[$n]); 
     if($t==9||$t==10||(32<=$t&&$t<=126)){ 
       $tn=1;$n++;$noc++; 
     }elseif(194<=$t&&$t<=223){ 
       $tn=2;$n+=2;$noc+=2; 
     }elseif(224<=$t&&$t<=239){ 
       $tn=3;$n+=3;$noc+=2; 
     }elseif(240<=$t&&$t<=247){ 
       $tn=4;$n+=4;$noc+=2; 
     }elseif(248<=$t&&$t<=251){ 
       $tn=5;$n+=5;$noc+=2; 
     }elseif($t==252||$t==253){ 
       $tn=6;$n+=6;$noc+=2; 
     }else{ 
       $n++; 
     } 
     if($noc>=$length){ 
       break; 
     } 
   } 
   if($noc>$length){ 
     $n-=$tn; 
   } 
   $strcut=substr($string,0,$n); 
   $strcut=str_replace(array("∵","&",""",""","“","”","—","<",">","·","…"),array("","&",""",""","“","”","—","<",">","·","…"),$strcut); 
 }else{ 
   $dotlen=strlen($dot); 
   $maxi=$length-$dotlen-1; 
   $current_str=""; 
   $search_arr=array("&","",""",""","“","”","—","<",">","·","…","∵");
   $replace_arr=array("&","",""",""","“","”","—","<",">","·","…",""); 
   $search_flip=array_flip($search_arr); 
   for($i=0;$i<$maxi;$i++){ 
     $current_str=ord($string[$i])>127?$string[$i].$string[++$i]:$string[$i]; 
     if(in_array($current_str,$search_arr)){ 
       $key=$search_flip[$current_str]; 
       $current_str=str_replace($search_arr[$key],$replace_arr[$key],$current_str); 
     } 
     $strcut.=$current_str; 
   } 
 } 
 return$strcut.$dot; 


11.产生随机字符串
复制代码代码如下:
/**
*产生随机字符串
*
*@param       int               $length   输出长度 
*@param       string        $chars    可选的,默认为0123456789
*@return    string        字符串
*/ 
functionrandom($length,$chars="0123456789"){ 
 $hash=""; 
 $max=strlen($chars)-1; 
 for($i=0;$i<$length;$i++){ 
   $hash.=$chars[mt_rand(0,$max)]; 
 } 
 return$hash; 


12.将字符串转换为数组
复制代码代码如下:
/**
*将字符串转换为数组
*
*@param string $data 字符串
*@return array 返回数组格式,如果,data为空,则返回空数组
*/ 
functionstring2array($data){ 
 if($data=="")returnarray(); 
 eval("\$array=$data;"); 
 return$array; 


13.将数组转换为字符串
复制代码代码如下:
/**
*将数组转换为字符串
*
*@param array $data   数组
*@param bool $isformdata 如果为0,则不使用new_stripslashes处理,可选参数,默认为1
*@return string 返回字符串,如果,data为空,则返回空
*/ 
functionarray2string($data,$isformdata=1){ 
 if($data=="")return""; 
 if($isformdata)$data=new_stripslashes($data); 
 returnaddslashes(var_export($data,TRUE)); 


14.转换字节数为其他单位
复制代码代码如下:
/**
*转换字节数为其他单位
*
*
*@param       string       $filesize       字节大小
*@return       string       返回大小
*/ 
functionsizecount($filesize){ 
       if($filesize>=1073741824){ 
               $filesize=round($filesize/1073741824*100)/100."GB"; 
       }elseif($filesize>=1048576){ 
               $filesize=round($filesize/1048576*100)/100."MB"; 
       }elseif($filesize>=1024){ 
               $filesize=round($filesize/1024*100)/100."KB"; 
       }else{ 
               $filesize=$filesize."Bytes"; 
       } 
       return$filesize;