当前位置: 首页 > 后端技术 > PHP

[2]PHP实用自定义函数-转换

时间:2023-03-29 23:18:28 PHP

前言本文自定义函数主要讲一些数据转换,废话不说,只说业务,以后PHP开发写一些实用的自定义功能,方便小伙伴们,可以快速开发使用。将xml格式转换为数组。当我们请求一些第三方接口的时候,它要么返回给你json类型的数据格式,要么返回xml或者其他。如果是json的话就很方便了,直接拿来用就可以了。当遇到xml格式的时候,需要转成数组格式,方便使用。/***将xml格式转换为数组*@paramstring$xmlxmlstring*@returnmixed*/functionxml_to_array($xml=''){//使用函数simplexml_load_string()将xml字符串加载到对象$obj=simplexml_load_string($xml,'SimpleXMLElement',LIBXML_NOCDATA);//对对象进行编码后,解码得到一个数组$arr=json_decode(json_encode($obj),true);return$arr;}隐藏中间的电话号码四位数字通常,为了保护用户隐私,用户手机号码等关键信息不能完全暴露在界面上,因此需要对其进行处理。比如中间四位号码一般是隐藏的.../***隐藏电话号码中间四位是*****@paramstring$mobile普通电话号码*@returnmixed*/functionreplace_phone($mobile=''){$new_mobile=substr_replace($mobile,'****'),3,4);return$new_mobile;}最简单的API请求通用返回数据格式这里我用最简单的方式来说明,通用API请求,最基本的需要返回的数据格式,通常,可以细分为成功返回和失败返回可以根据以实际情况为准。在很多框架中,都有直接封装的方法。你也可以去看看框架是如何处理它们的。/***最简单的ajax请求返回数据格式*@paramstring$msg返回提示信息*@paramint$code返回标识符符号*@paramarray$data返回数据*/functionajax_return($msg='',$code=0,$data=[]){$return['code']=$code;$return['msg']=$msg;$return['数据']=$数据;exit(json_encode($return,JSON_UNESCAPED_UNICODE));}截取字符串通常在某些列表或固定范围内显示一定长度的字符串时,如果我们不控制范围,很可能会导致显示超出界面或者溢出显示,导致页面布局不美观等,这时候我们需要控制显示字符串的长度,截取多余的部分.../***截取字符串,并显示多余带省略号*@paramstring$text待截取字符串*@paramint$length截取长度,默认全部截取*@paramstring$rep截取超出替换的字符串,默认为省略号*@returnstring*/functioncut_string($text='',$length=0,$rep='…'){if(!empty($length)&&mb_strlen($text,'utf8')>$length){$text=mb_substr($text,0,$length,'utf8')。$代表;}return$text;}根据生日计算年龄在一些论坛或者交友平台上,经常看到XX是18岁。如果遇到这种开发需求,是不是要处理一下?我是一个善良的人。开发者,我肯定想到了这种东西,让我来吧,编排已经写好,直接拿来用。/***根据生日计算年龄*@paramstring$datebirthday年月日*@returnint*/functionget_age($date=''){$age=0;$time=strtotime($date);//如果日期不合法,则不处理if(!$time){return$age;}//计算时差$date=date('Y-m-d',$time);列表($year,$month,$day)=explode("-",$date);$age=date("Y",time())-$year;$diff_month=date("m")-$month;$diff_day=date("d")-$day;//如果年龄小于一岁则减1if($age<0||$diff_month<0||$diff_day<0){$age--;}return$age;}日期时间显示格式转换最常见的就是我们每天在朋友圈的时间,左下角的时间,比如:10分钟前,2小时前,昨天等。你遇到过这种时间显示转换的需求吗?这种开发需要的找我,我已经安排好了,拿来用的那个.../***日期时间显示格式转换*@paramint$timetimestamp*@returnbool|string*/functiontransfer_show_time($time=0){//时间显示格式$day_time=date("m-dH:i",$time);$hour_time=date("H:i",$time);//时差$diff_time=time()-$time;$date=$day_time;如果($diff_time<60){$date='just';}否则如果($diff_time<60*60){$min=floor($diff_time/60);$日期=$分钟。'几分钟前';}elseif($diff_time<60*60*24){$h=floor($diff_time/(60*60));$日期=$小时。'一个小时前'。$小时时间;}elseif($diff_time<60*60*24*3){$day=floor($diff_time/(60*60*24));如果($day==1){$date='昨天'.$day_time;}else{$date='前天'.$day_time;}}return$date;}获取毫秒在日常开发中,我们一般通过time()直接获取时间戳的秒数,很少遇到需要获取毫秒数的情况,但是,要做好准备,万一有坑比需要任何时候都有这个要求,那么无论如何都要满足,作为一个专业的开发者一般都是响应式的.../***获取毫秒数*@returnstring*/functionget_millisecond(){list($t1,$t2)=explode('',微时间());$ms=sprintf('%.0f',(floatval($t1)+floatval($t2))*1000);return$ms;}CURL请求的GET方法通常我们会遇到需要请求第三方接口的情况,一般也会封装自己的接口请求方法,同理,这是最基本的GET请求封装/***CURL请求的GET方法*@paramstring$url请求接口地址*@returnbool|mixed*/functioncurl_get($url=''){$ch=curl_init();curl_setopt($ch,CURLOPT_网址,$网址);curl_setopt($ch,CURLOPT_HEADER,0);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//不验证SSL证书curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);$res=curl_exec($ch);curl_close($ch);return$res;}CURL请求的POST方法第三方接口很多,一般POST方法比较多。所以,我也给大家封装了一个基本的请求方法。根据实际情况,修改完善。/***CURL请求的POST方法*@paramstring$url请求接口地址*@paramarray$data请求参数*@paramint$timeout超时时间*@returnmixed*/functioncurl_post($url='',$data=[],$timeout=3000){$post_data=http_build_query($data,'','&');header("内容类型:text/html;charset=utf-8");$ch=curl_init();curl_setopt($ch,CURLOPT_URL,$url);curl_setopt($ch,CURLOPT_POST,1);curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);curl_setopt($ch,CURLOPT_HEADER,false);$res=curl_exec($ch);curl_close($ch);return$res;}最后,我会慢慢更新其他的实用函数,如果大家有其他有趣有用的欢迎分享,大家一起学习交流。顺便说一下,如果有不对或不对的地方,请指出,我会尽力改进,谢谢。