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

[5]PHP实用自定义函数——函数

时间:2023-03-30 05:23:20 PHP

前言本文自定义函数主要讲几个函数的作用,比较实用。让我重申一下,我自己执行这些功能中的每一个。而且已经测试过了,所以不会出现执行会报错这种情况。好了,废话不多说,直接说正事。我会写一些PHP开发中比较实用的自定义函数,方便使用的朋友快速开发使用。获取指定长度的随机字符串相信大家都遇到过需要生成指定长度的随机字符串,比如:登录密码验证的passwordsalt,随机生成用户密码,用户昵称等,虽然里面可能有自己的一些规律,但是大意基本是一样的,大同小异。/***获取指定长度的随机字符串*@paramint$length随机字符串的长度*@returnstring*/functionget_random_str($length=9){//字符串集合,所有大小写字母和数字$chars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';$str='';//多次循环,一个一个随机获取for($i=0;$i<$length;$i++){$str.=$chars[mt_rand(0,strlen($chars)-1)];}return$str;}统计文章中文字和图片的个数一篇文章主要由文字和图片组成,当然还有一些形式符号,如果全是文字,感觉有点太枯燥了,所以很多文章强调图文结合的需要。那么,说到这里,你是不是有想数一数一篇文章到底有多少图片,多少文字的冲动呢?不骗你,说实话,你肯定有,那么怎么算,自然有热心网友帮你,看下面,当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当当……@paramstring$html文章htmlstring*@returnarray*/functioncount_word_img($html=''){//匹配img标签的个数preg_match_all('/].+)>/iU","",$html);//移除非标签图像$html=preg_replace($pattern,"",$html);//移除所有空格$html=str_replace('','',$html);//先去除HTML和PHP标签,然后统计字数$word_count=mb_strlen(trim(strip_tags($html)),'UTF-8');return['word_count'=>$word_count,'img_count'=>$img_count];}格式化打印输出内容在我们日常的开发调试过程中,是否希望有一个功能可以让你快速打印出数据,很多框架封装的有这些ThinkPHP5框架中的dump()、halt()等辅助函数,Laravel框架中的dump()、dd()等辅助函数,但是没有这个辅助函数怎么办呢?有的开发者可能会这样打印调试this:print_r($a);die();orecho'

';print_r($a);exit();有时候,经过调试,还是不直接删除,直接注释掉,这不是一个好习惯it;continue,遇到fra中没有的函数mework或者你对这个框架不满意,你觉得应该自己做一个吗,有必要,马上动手安排.../***格式化打印输出内容*@paramvoid$datacontenttobeprinted*@parambool$exit*/functiondump_plus($data,$exit=true){//自定义样式,方便BeautifulView$output='';//boolean或null类型直接文本输出,其他print_r格式化输出if(is_bool($data)){$show=$data?'真假';}elseif(is_null($data)){$show='null';}else{$show=var_export($data,true);}//拼接文本输出$output.=$show;$output.='
';回声$输出;//是否中断执行if($exit){exit();}}通过IP地址获取位置信息说到这里,我们来看下图:可以在图片上定位并显示自己的位置,是不是很神奇?不要惊讶,在全能的程序员大哥眼里,什么都不是问题。有的话,就是给他介绍个合伙人。事情搞砸了).../***通过IP地址获取位置信息*markdown快速使用*@paramstring$ipIP地址*@returnmixed*/functionget_ip_info($ip=''){$api='http://www.geoplugin.net/json.gp?ip=';$res_data=file_get_contents($api.$ip);$res=json_decode($res_data,true);$数据=[];if($res['geoplugin_status']=='200'){//国家$data['country']=$res['geoplugin_countryName'];//省$data['province']=$res['geoplugin_regionName'];//城市$data['city']=$res['geoplugin_city'];//经度$data['latitude']=$res['geoplugin_latitude'];//纬度$data['longitude']=$res['geoplugin_longitude'];//其他值,根据需要自定义}return$data;}发红包,节假日金额随机,微信群里有各种红包,你发了多少,抢了多少?一般群里的红包都是幸运红包。作为程序员的兄弟姐妹们,你愿意只抢红包不去想这个红包是怎么让自己变胖的吗?我知道,你一定想好了,只是忙着抢红包,没时间过来。大家都明白,就让我来做这种粗活。/***发送红包数量随机*@paramint$红包总数*@paramint$num红包数量*@paramfloat$min最小红包数量*@@returnarray*/functionget_red_pa??cket($total=0,$num=1,$min=0.01){$data=[];for($i=1;$i<$num;$i++){//随机数安全上限控制$safe_total=($total-($num-$i)*$min)/($num-$i);$money=mt_rand($min*100,$safe_total*100)/100;总计-=金钱;//sort为接收顺序,money为红包金额,balance为接收后的余额$data[]=['sort'=>$i,'money'=>$money,'balance'=>$总计];}//最后一个红包$data[]=['sort'=>$num,'money'=>$total,'balance'=>0];return$data;}Getthefirstletterofthetext获取文本的首字母,在什么情况下关于这种需求,之前做过一个需求,就是定位城市名,直接定位所有的城市根据首字母从这个首字母开始,这样可以节省很多查找时间。我们的手机通讯录也有这个搜索,大家可以看看,那么如何获取该类型的首字母,我们一起来讨论一下.../***获取文本的首字母*@paramstring$str文本字符串*@return字符串*/functionget_first_char($str=''){$first_char=$str[0];//判断是否为字符串if(ord($first_char)>=ord("A")&&ord($first_char)<=ord("z")){returnstrtoupper($first_char);}$str=iconv("UTF-8","gb2312",$str);$asc=ord($str[0])*256+ord($str[1])-65536;$first_char='';如果($asc>=-20319and$asc<=-20284)$first_char="A";elseif($asc>=-20283and$asc<=-19776)$first_char="B";elseif($asc>=-19775and$asc<=-19219)$first_char="C";elseif($asc>=-19218and$asc<=-18711)$first_char="D";elseif($asc>=-18710and$asc<=-18527)$first_char="E";elseif($asc>=-18526and$asc<=-18240)$first_char="F";elseif($asc>=-18239and$asc<=-17923)$first_char="G";elseif($asc>=-17922and$asc<=-17418)$first_char="H";elseif($asc>=-17417and$asc<=-16475)$first_char="J";elseif($asc>=-16474and$asc<=-16213)$first_char="K";elseif($asc>=-16212and$asc<=-15641)$first_char="L";elseif($asc>=-15640and$asc<=-15166)$first_char="M";elseif($asc>=-15165and$asc<=-14923)$first_char="N";elseif($asc>=-14922and$asc<=-14915)$first_char="O";elseif($asc>=-14914and$asc<=-14631)$first_char="P";elseif($asc>=-14630and$asc<=-14150)$first_char="Q";elseif($asc>=-14149and$asc<=-14091)$first_char="R";elseif($asc>=-14090and$asc<=-13319)$first_char="S";elseif($asc>=-13318and$asc<=-12839)$first_char="T";elseif($asc>=-12838and$asc<=-12557)$first_char="W";elseif($asc>=-12556and$asc<=-11848)$first_char="X";elseif($asc>=-11847and$asc<=-11056)$first_char="Y";elseif($asc>=-11055and$asc<=-10247)$first_char="Z";rreturn$first_char;}删除指定目录下的文件夹和文件有一天,领导给了你一个小任务,让你写一个定时任务,在固定的时间清除某个文件夹下的所有文件和空文件夹。这种小需求,当然是给你浇水了,但是此刻你在跟女票聊天,火辣辣的,不回消息就得跪键盘一分多钟,它在哪里?你可以走开,为这些小事分心,幸好有我在。这种小事我一定会帮你的,你可以用来处理公事/***删除指定目录下的文件夹和文件*@paramstring$path目录路径*/functiondelete_dir($path=''){//清空默认当前目录if($path==''){$path=真实路径('.');}//判断目录是否存在if(!is_dir($path)){exit('目录['.$path.']不存在');}//删除路径目录Final/if(substr($path,-1,1)=='/'){$path=substr_replace($path,'',-1,1);}//扫描文件夹文件夹和文件中的所有文件$file_arr=scandir($path);foreach($file_arras$file){//排除当前目录。andparentdirectory..if($file!="."&&$file!=".."){//如果是目录,递归子目录$this_file=$path.DIRECTORY_SEPARATOR。$文件;if(is_dir($this_file)){//继续循环遍历子目录delete_dir($this_file);//删除空文件Clip@rmdir($this_file);}elseif(is_file($this_file)){//直接删除文件类型unlink($this_file);}}}}自定义功能源码为了方便,我把我整理的所有文件都自定义了功能都放在一个文件里,上传到同性交友网站GitHub,方便交流和使用也方便大家帮我排查。需要的同学可以自行领取。我会不时更新它。地址如下:函数源码地址:https://github.com/gxcuizy/Blog/blob/master/code/common在.php的最后,我会慢慢更新其他实用的自定义函数。如果您还有其他有趣和有用的,请分享。让我们一起学习和交流。如有不对或不对的地方,请大家指出,我会尽力改进,谢谢。