一些php项目中比较通用的php自建函数
以下一些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,防止破解
[*]*@returnstring
[*]*/
[*]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:'';
[*]}
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.产生随机字符串
[*]/**
[*]*产生随机字符串
[*]*
[*]*@paramint$length输出长度
[*]*@paramstring$chars可选的,默认为0123456789
[*]*@returnstring字符串
[*]*/
[*]functionrandom($length,$chars='0123456789'){
[*]$hash='';
[*]$max=strlen($chars)-1;
[*]for($i=0;$i<$length;$i++){
[*]$hash.=$chars;
[*]}
[*]return$hash;
[*]}
12.将字符串转换为数组
[*]/**
[*]*将字符串转换为数组
[*]*
[*]*@paramstring$data字符串
[*]*@returnarray返回数组格式,如果,data为空,则返回空数组
[*]*/
[*]functionstring2array($data){
[*]if($data=='')returnarray();
[*]eval("\$array=$data;");
[*]return$array;
[*]}
13.将数组转换为字符串
[*]/**
[*]*将数组转换为字符串
[*]*
[*]*@paramarray$data数组
[*]*@parambool$isformdata如果为0,则不使用new_stripslashes处理,可选参数,默认为1
[*]*@returnstring返回字符串,如果,data为空,则返回空
[*]*/
[*]functionarray2string($data,$isformdata=1){
[*]if($data=='')return'';
[*]if($isformdata)$data=new_stripslashes($data);
[*]returnaddslashes(var_export($data,TRUE));
[*]}
14.转换字节数为其他单位
[*]/**
[*]*转换字节数为其他单位
[*]*
[*]*
[*]*@paramstring$filesize字节大小
[*]*@returnstring返回大小
[*]*/
[*]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;
[*]}
页:
[1]