|
以下一些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[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.产生随机字符串
- /**
- *产生随机字符串
- *
- *@paramint$length输出长度
- *@paramstring$chars可选的,默认为0123456789
- *@returnstring字符串
- */
- functionrandom($length,$chars='0123456789'){
- $hash='';
- $max=strlen($chars)-1;
- for($i=0;$i<$length;$i++){
- $hash.=$chars[mt_rand(0,$max)];
- }
- 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;
- }
|
|