设为首页 收藏本站
查看: 578|回复: 0

[经验分享] 一些php项目中比较通用的php自建函数

[复制链接]

尚未签到

发表于 2017-3-28 14:52:35 | 显示全部楼层 |阅读模式
  以下一些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;
  • }



  


  


  


  


  


  


  

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-356651-1-1.html 上篇帖子: lajp 实现php高效调用java 下篇帖子: 身处两难境地,PHP 该走向何方?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表