翼度科技»论坛 编程开发 PHP 查看内容

一文总结常用PHP业务逻辑demo

5

主题

5

帖子

15

积分

新手上路

Rank: 1

积分
15
项目开发常用业务逻辑代码

项目开发中经常用到的业务逻辑代码,总结在此处,备用。

1、加密解密函数:
  1. function encryptDecrypt($key, $string, $decrypt){
  2.     if($decrypt){
  3.         $decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($string), MCRYPT_MODE_CBC, md5(md5($key))), "12");
  4.         return $decrypted;
  5.     }else{
  6.         $encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key))));
  7.         return $encrypted;
  8.     }
  9. }
复制代码
在使用的时候我们可以为加密的字符串,设置一个加密KEY值,解密的时候传入这个KEY值即可获得密文原文。$decrypt取值0和1时分别对应加密、解密。

2、上传图片方向纠正:

由于每个人拍照姿势都不一样,难免有人拍照上传的图片出现倒立的情况,下面这个业务逻辑可以自动纠正上传图片的方向。
  1. $image = imagecreatefromstring(file_get_contents($_FILES['image_upload']['tmp_name']));
  2. $exif = exif_read_data($_FILES['image_upload']['tmp_name']);
  3. if(!emptyempty($exif['Orientation'])) {
  4.     switch($exif['Orientation']) {
  5.         case 8:
  6.             $image = imagerotate($image,90,0);
  7.             break;
  8.         case 3:
  9.             $image = imagerotate($image,180,0);
  10.             break;
  11.         case 6:
  12.             $image = imagerotate($image,-90,0);
  13.             break;
  14.     }
  15. }
复制代码
3、拆分姓名中的姓氏和名字
  1. /**
  2.  * 拆分姓名(姓氏和名字)
  3.  * @param string $fullname 全名(如:百里屠苏)
  4.  * @return array 一维数组[0=>'姓氏',1=>'名称']
  5.  * @return array
  6.  */
  7. function splitName($fullname){
  8.     $hyphenated = array(
  9.         '百里','北堂','北野','北宫','辟闾',
  10.         '淳于','成公','陈生','褚师','城池',
  11.         '端木','东方','东郭','东野','东门','第五','大狐','段干','段阳','第二','东宫',
  12.         '公孙','公冶','公羊','公良','公西','公孟','公伯','公析','公肩','公坚','公乘','公皙','公户','公广','公仪','公祖','公玉','公仲','公上','公门','公山','高堂','高阳','郭公','谷梁','毌将','毌丘','单于','叱干','叱利','车非',
  13.         '独孤','大野','独吉','达奚','东里',
  14.         '哥舒','贯丘',
  15.         '皇甫','黄龙','胡母','何阳','赫连','呼延','贺兰','贺若','黑齿','斛律','斛粟',
  16.         '夹谷','九方','即墨','吉胡',
  17.         '可频',
  18.         '梁丘','闾丘','洛阳','陵尹','冷富','龙丘','令狐',
  19.         '慕容','万俟','抹捻',
  20.         '纳兰','南荣',
  21.         '南宫','南郭','女娲','南伯','南容','南门','南野',
  22.         '欧阳','欧侯',
  23.         '濮阳','普周','仆固','仆散','蒲察',
  24.         '青阳','漆雕','亓官','渠丘','屈突','屈卢','钳耳',
  25.         '壤驷','汝嫣',
  26.         '上官','少室','少叔','司徒','司马','司空','司寇','士孙','申屠','申徒','申鲜','申叔','夙沙','叔先','叔仲','叔孙','侍其','是云','索卢','厍狄',
  27.         '澹台','太史','太叔','太公','屠岸','唐古','拓跋','同蹄','秃发',
  28.         '闻人','巫马','微生','王孙','无庸','完颜',
  29.         '夏侯','西门','信平','鲜于','轩辕','相里','新垣','徐离姓',
  30.         '羊舌','羊角','延陵','於陵','伊祁','吾丘','乐正','宇文','尉迟','耶律',
  31.         '诸葛','颛孙','仲孙','仲长','钟离','宗政','主父','中叔','左人','左丘','宰父','长儿','仉督','长孙','子车','子书','子桑'
  32.     );
  33.     $vLength = mb_strlen($fullname, 'utf-8');
  34.     $lastname = '';
  35.     $firstname = '';//前为姓,后为名
  36.     if($vLength > 2){
  37.         $preTwoWords = mb_substr($fullname, 0, 2, 'utf-8');//取命名的前两个字,看是否在复姓库中
  38.         if(in_array($preTwoWords, $hyphenated)){
  39.             $lastname = $preTwoWords;
  40.             $firstname = mb_substr($fullname, 2, 10, 'utf-8');
  41.         }else{
  42.             $lastname = mb_substr($fullname, 0, 1, 'utf-8');
  43.             $firstname = mb_substr($fullname, 1, 10, 'utf-8');
  44.         }
  45.     }else if($vLength == 2){//全名只有两个字时,以前一个为姓,后一下为名
  46.         $lastname = mb_substr($fullname ,0, 1, 'utf-8');
  47.         $firstname = mb_substr($fullname, 1, 10, 'utf-8');
  48.     }else{
  49.         $lastname = $fullname;
  50.     }
  51.     return array($lastname, $firstname);
  52. }
复制代码
4、打印输出数据到文件
  1. /**
  2.  * 打印输出数据到文件
  3.  * @param mixed $data
  4.  * @param bool $replace
  5.  * @param string|null $pathname
  6.  */
  7. function p($data, $replace = false, $pathname = null)
  8. {
  9.     is_null($pathname) && $pathname = RUNTIME_PATH . date('Ymd') . '.txt';
  10.     $str = (is_string($data) ? $data : (is_array($data) || is_object($data)) ? print_r($data, true) : var_export($data, true)) . "\n";
  11.     $replace ? file_put_contents($pathname, $str) : file_put_contents($pathname, $str, FILE_APPEND);
  12. }
复制代码
这个函数虽然很小巧,但是在调试一些内部执行数据的时候非常有用,且很方便的输出我们要查看的数据。

5、随机字符生成
  1. /*
  2.  * 随机字符生成
  3.  */
  4. function randStr($len=6,$format='all') {
  5.     switch($format) {
  6.         case 'all':
  7.             $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-@#~'; break;
  8.         case 'char':
  9.             $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-@#~'; break;
  10.         case 'number':
  11.             $chars='0123456789'; break;
  12.         case 'charnum':
  13.             $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
  14.             break;
  15.         case 'verify':
  16.             $chars='ABCDEFGHIJKMNPQRSTUVWXYZ23456789';
  17.             break;
  18.     }
  19.     mt_srand();
  20.     $password="";
  21.     while(strlen($password)<$len)
  22.         $password.=substr($chars,(mt_rand()%strlen($chars)),1);
  23.     return $password;
  24. }
复制代码
6、生成唯一订单号
  1. /*
  2.  * 生成唯一订单号
  3.  */
  4. function CreateOrderId(){
  5.     $order_id_main = date('YmdHis') . rand(10000000,99999999);
  6.     //订单号码主体长度
  7.     $order_id_len = strlen($order_id_main);
  8.     $order_id_sum = 0;
  9.     for($i=0; $i<$order_id_len; $i++){
  10.         $order_id_sum += (int)(substr($order_id_main,$i,1));
  11.     }
  12.     //唯一订单号码(YYYYMMDDHHIISSNNNNNNNNCC)
  13.     $order_id = $order_id_main . str_pad((100 - $order_id_sum % 100) % 100,2,'0',STR_PAD_LEFT);
  14.     return $order_id;
  15. }
复制代码
7、获取毫秒级时间戳。

关于获取毫秒级时间戳其实只需要一行代码,网上很多人专门写了很多函数去处理。因为毫秒级的时间戳是13位,int类会溢出。操作使用时可以以float类型或string类型均可。
  1. $timestamp = substr(microtime(true)*1000,0,13);
复制代码
8、获取文章中的图片
  1. /*
  2.  * 获取文章图片
  3.  */
  4. function getContentPic($content,$num='1'){
  5.     $pattern="/<img.*?src=[\'|"](.*?)[\'|"].*?[\/]?>/";
  6.     preg_match_all($pattern,htmlspecialchars_decode($content),$match);
  7.     if(!emptyempty($match[1]) && $num == 1){
  8.         return $match[1][0];
  9.     }else{
  10.         return $match[1];
  11.     }
  12.     return '';
  13. }
复制代码
9、重写PHP array_push实现自由添加数组键值
  1. /*
  2.  * 重写array_push
  3.  * @param $array array 目标数组
  4.  * @param $value mix 键值
  5.  * @param $position int 索引位置
  6.  * @param $key string 键名
  7.  * @return Array
  8.  */
  9. function array_push_position(&$array, $value=0, $position, $key = null)
  10. {
  11.     $count = 0;
  12.     $return = array();
  13.     foreach ($array as $k => $v)
  14.     {
  15.         if ($count == $position)
  16.         {
  17.             if (!$key) $key = $count;
  18.             $return[$key] = $value;
  19.             $inserted = true;
  20.         }
  21.         $return[$k] = $v;
  22.         $count++;
  23.     }
  24.     if (!$key) $key = $count;
  25.     if (!$inserted) $return[$key];
  26.     $array = $return;
  27.     return $array;
  28. }
复制代码
10、修改XML文件节点

(可以很方便的生成网站地图,方便SEO优化)
  1. /*
  2.  * Xml文件增加节点
  3.  * @param $filename string 文件路径
  4.  * @param $data array 追加数组
  5.  * @param $nodename string 节点名称
  6.  * @return boole
  7.  */
  8. function addXmlNode($filename,$data,$nodename){
  9.     if(is_array($data) && !emptyempty($data) && is_file($filename) && is_string($nodename)){
  10.         $contents = file_get_contents($filename);
  11.         $xml = @simplexml_load_string($contents);
  12.         foreach($data as $key=>$value){
  13.             foreach($data[$key] as $k=>$v){
  14.                 $item = $xml->addChild($nodename);
  15.                 $item->addChild($k,$v);
  16.             }
  17.         }
  18.         $xml->asXML();
  19.         $xmlDocument = new DOMDocument('1.0');
  20.         $xmlDocument->preserveWhiteSpace = false;
  21.         $xmlDocument->formatOutput = true;
  22.         $xmlDocument->loadXML($xml->asXML(),LIBXML_NOERROR);
  23.         $res = file_put_contents($filename,$xmlDocument->saveXML());
  24.         return  $res !== false?true:$res;
  25.     }else{
  26.         throw new \think\Exception('Incorrect parameters');
  27.     }
  28. }
复制代码
提示:上述方法基于thinkPHP的异常抛出,如果非thinkPHP框架记得自行修改上述代码,以免报错。我懒得改了。

11、uuid生成

生成UUID的格式:8-4-4-4-12
  1. function createUUID(){
  2.     $chars = md5(uniqid(mt_rand(), true));
  3.     $uuid = substr ( $chars, 0, 8 ) . '-'
  4.         . substr ( $chars, 8, 4 ) . '-'
  5.         . substr ( $chars, 12, 4 ) . '-'
  6.         . substr ( $chars, 16, 4 ) . '-'
  7.         . substr ( $chars, 20, 12 );
  8.     return $uuid ;
  9. }
复制代码
12、计算两个日期中间相差多少年多少月多少天多少小时
  1. function diffTimes($stime=null){
  2.     $stime = emptyempty($stime)?time():strtotime($stime);
  3.     $now = time();
  4.     //$dateMonthOne = explode('-', date('Y-m', $stime));
  5.     //$dateMonthTwo = explode('-', date('Y-m', $now));
  6.     $diff = [];
  7.     $diff['hours'] = ($now - $stime) / (60 * 60);
  8.     //$diff['day'] = ($now - $stime) / (60 * 60 * 24);
  9.     //$diff['month'] = abs($dateMonthOne[0] - $dateMonthTwo[0]) * 12 + abs($dateMonthOne[1] - $dateMonthTwo[1]);
  10.     //$diff['year'] = date('Y', $now) - date('Y', $stime);
  11.     return intval($diff['hours'])."小时";
  12. }
复制代码
13、分钟数转时分
  1. function min2hour($min){
  2.     $hours = intval($min/60);
  3.     $minutes = $min % 60;
  4.     return $hours."小时".$minutes."分";
  5. }
复制代码
14、时间友好展示
刚刚、几分钟前、几天前、几年前
  1. function mdate($time = NULL) {
  2.     $text = '';
  3.     $time = $time === NULL || $time > time() ? time() : intval($time);
  4.     $t = time() - $time; //时间差 (秒)
  5.     $y = date('Y', $time)-date('Y', time());//是否跨年
  6.     switch($t){
  7.         case $t == 0:
  8.             $text = '刚刚';
  9.             break;
  10.         case $t < 60:
  11.             $text = $t . '秒前'; // 一分钟内
  12.             break;
  13.         case $t < 60 * 60:
  14.             $text = floor($t / 60) . '分钟前'; //一小时内
  15.             break;
  16.         case $t < 60 * 60 * 24:
  17.             $text = floor($t / (60 * 60)) . '小时前'; // 一天内
  18.             break;
  19.         case $t < 60 * 60 * 24 * 3:
  20.             $text = floor($time/(60*60*24)) ==1 ?'昨天 ' . date('H:i', $time) : '前天 ' . date('H:i', $time) ; //昨天和前天
  21.             break;
  22.         case $t < 60 * 60 * 24 * 30:
  23.             $text = date('m-d H:i', $time); //一个月内
  24.             break;
  25.         case $t < 60 * 60 * 24 * 365&&$y==0:
  26.             $text = date('m-d', $time); //一年内
  27.             break;
  28.         default:
  29.             $text = date('Y-m-d', $time); //一年以前
  30.             break;
  31.     }
  32.     return $text;
  33. }
复制代码
15、隐藏字符串中间一部分,用*代替
  1. function hideStr($string, $bengin=0, $len = 4, $type = 0, $glue = "@") {
  2.     if (emptyempty($string))
  3.         return false;
  4.     $array = array();
  5.     if ($type == 0 || $type == 1 || $type == 4) {
  6.         $strlen = $length = mb_strlen($string);
  7.         while ($strlen) {
  8.             $array[] = mb_substr($string, 0, 1, "utf8");
  9.             $string = mb_substr($string, 1, $strlen, "utf8");
  10.             $strlen = mb_strlen($string);
  11.         }
  12.     }
  13.     if ($type == 0) {
  14.         for ($i = $bengin; $i < ($bengin + $len); $i++) {
  15.             if (isset($array[$i]))
  16.                 $array[$i] = "*";
  17.         }
  18.         $string = implode("", $array);
  19.     }else if ($type == 1) {
  20.         $array = array_reverse($array);
  21.         for ($i = $bengin; $i < ($bengin + $len); $i++) {
  22.             if (isset($array[$i]))
  23.                 $array[$i] = "*";
  24.         }
  25.         $string = implode("", array_reverse($array));
  26.     }else if ($type == 2) {
  27.         $array = explode($glue, $string);
  28.         $array[0] = hideStr($array[0], $bengin, $len, 1);
  29.         $string = implode($glue, $array);
  30.     } else if ($type == 3) {
  31.         $array = explode($glue, $string);
  32.         $array[1] = hideStr($array[1], $bengin, $len, 0);
  33.         $string = implode($glue, $array);
  34.     } else if ($type == 4) {
  35.         $left = $bengin;
  36.         $right = $len;
  37.         $tem = array();
  38.         for ($i = 0; $i < ($length - $right); $i++) {
  39.             if (isset($array[$i]))
  40.                 $tem[] = $i >= $left ? "*" : $array[$i];
  41.         }
  42.         $array = array_chunk(array_reverse($array), $right);
  43.         $array = array_reverse($array[0]);
  44.         for ($i = 0; $i < $right; $i++) {
  45.             $tem[] = $array[$i];
  46.         }
  47.         $string = implode("", $tem);
  48.     }
  49.     return $string;
  50. }
复制代码
使用说明:
第一个参数是需要转换的字符串;
第二个参数是隐藏的起始位置,当type=4时表示左侧保留长度;
第三个参数是需要隐藏的字符串个数(长度)当type=4时表示右侧保留长度;
第四个参数type取值所代表的意义:0,从左向右隐藏;1,从右向左隐藏;2,从指定字符位置分割前由右向左隐藏;3,从指定字符位置分割后由左向右隐藏;4,保留首末指定字符串。
第五个参数是分隔符。

16、二维数组按指定键排序
  1. function array_msort($array, $cols)
  2. {
  3.     $colarr = array();
  4.     foreach ($cols as $col => $order) {
  5.         $colarr[$col] = array();
  6.         foreach ($array as $k => $row) { $colarr[$col]['_'.$k] = strtolower($row[$col]); }
  7.     }
  8.     $eval = 'array_multisort(';
  9.     foreach ($cols as $col => $order) {
  10.         $eval .= '$colarr[\''.$col.'\'],'.$order.',';
  11.     }
  12.     $eval = substr($eval,0,-1).');';
  13.     eval($eval);
  14.     $ret = array();
  15.     foreach ($colarr as $col => $arr) {
  16.         foreach ($arr as $k => $v) {
  17.             $k = substr($k,1);
  18.             if (!isset($ret[$k])) $ret[$k] = $array[$k];
  19.             $ret[$k][$col] = $array[$k][$col];
  20.         }
  21.     }
  22.     return $ret;
  23. }
复制代码
17、Base64图片流转图片文件
  1. function saveBase64Image($base64_image_content,$image_path){
  2.     if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image_content, $result)){
  3.         //图片后缀
  4.         $type = $result[2];
  5.         if($type=='jpeg'){
  6.             $type='jpg';
  7.         }
  8.         //保存位置--图片名
  9.         $image_name=date('His').str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT).".".$type;
  10.         //$image_path = '/static/upload/quanzi/'.$memberid.'/image/';
  11.         $image_url = $image_path.$image_name;
  12.         if(!is_dir(ROOT_PATH.$image_path)){
  13.             mkdir(ROOT_PATH.$image_path,0755,true);
  14.         }
  15.         //解码
  16.         $decode=base64_decode(str_replace($result[1], '', $base64_image_content));
  17.         if (file_put_contents(ROOT_PATH.$image_url, $decode)){
  18.             $data['code']='0';
  19.             $data['imageName']=$image_name;
  20.             $data['image_url']=$image_url;
  21.             $data['type']=$type;
  22.             $data['msg']='保存成功!';
  23.         }else{
  24.             $data['code']='1';
  25.             $data['imgageName']='';
  26.             $data['image_url']='';
  27.             $data['type']='';
  28.             $data['msg']='图片保存失败!';
  29.         }
  30.     }else{
  31.         $data['code']='1';
  32.         $data['imgageName']='';
  33.         $data['image_url']='';
  34.         $data['type']='';
  35.         $data['msg']='base64图片格式有误!';
  36.     }
  37.     return $data;
  38. }
复制代码
18、随机昵称
  1. function randnickname(){
  2.     $tou=array('快乐','冷静','醉熏','潇洒','糊涂','积极','冷酷','深情','粗暴','温柔','可爱','愉快','义气','认真','威武','帅气','传统','潇洒','漂亮','自然','专一','听话','昏睡','狂野','等待','搞怪','幽默','魁梧','活泼','开心','高兴','超帅','留胡子','坦率','直率','轻松','痴情','完美','精明','无聊','有魅力','丰富','繁荣','饱满','炙热','暴躁','碧蓝','俊逸','英勇','健忘','故意','无心','土豪','朴实','兴奋','幸福','淡定','不安','阔达','孤独','独特','疯狂','时尚','落后','风趣','忧伤','大胆','爱笑','矮小','健康','合适','玩命','沉默','斯文','香蕉','苹果','鲤鱼','鳗鱼','任性','细心','粗心','大意','甜甜','酷酷','健壮','英俊','霸气','阳光','默默','大力','孝顺','忧虑','着急','紧张','善良','凶狠','害怕','重要','危机','欢喜','欣慰','满意','跳跃','诚心','称心','如意','怡然','娇气','无奈','无语','激动','愤怒','美好','感动','激情','激昂','震动','虚拟','超级','寒冷','精明','明理','犹豫','忧郁','寂寞','奋斗','勤奋','现代','过时','稳重','热情','含蓄','开放','无辜','多情','纯真','拉长','热心','从容','体贴','风中','曾经','追寻','儒雅','优雅','开朗','外向','内向','清爽','文艺','长情','平常','单身','伶俐','高大','懦弱','柔弱','爱笑','乐观','耍酷','酷炫','神勇','年轻','唠叨','瘦瘦','无情','包容','顺心','畅快','舒适','靓丽','负责','背后','简单','谦让','彩色','缥缈','欢呼','生动','复杂','慈祥','仁爱','魔幻','虚幻','淡然','受伤','雪白','高高','糟糕','顺利','闪闪','羞涩','缓慢','迅速','优秀','聪明','含糊','俏皮','淡淡','坚强','平淡','欣喜','能干','灵巧','友好','机智','机灵','正直','谨慎','俭朴','殷勤','虚心','辛勤','自觉','无私','无限','踏实','老实','现实','可靠','务实','拼搏','个性','粗犷','活力','成就','勤劳','单纯','落寞','朴素','悲凉','忧心','洁净','清秀','自由','小巧','单薄','贪玩','刻苦','干净','壮观','和谐','文静','调皮','害羞','安详','自信','端庄','坚定','美满','舒心','温暖','专注','勤恳','美丽','腼腆','优美','甜美','甜蜜','整齐','动人','典雅','尊敬','舒服','妩媚','秀丽','喜悦','甜美','彪壮','强健','大方','俊秀','聪慧','迷人','陶醉','悦耳','动听','明亮','结实','魁梧','标致','清脆','敏感','光亮','大气','老迟到','知性','冷傲','呆萌','野性','隐形','笑点低','微笑','笨笨','难过','沉静','火星上','失眠','安静','纯情','要减肥','迷路','烂漫','哭泣','贤惠','苗条','温婉','发嗲','会撒娇','贪玩','执着','眯眯眼','花痴','想人陪','眼睛大','高贵','傲娇','心灵美','爱撒娇','细腻','天真','怕黑','感性','飘逸','怕孤独','忐忑','高挑','傻傻','冷艳','爱听歌','还单身','怕孤单','懵懂');
  3.     $do = array("的","爱","","与","给","扯","和","用","方","打","就","迎","向","踢","笑","闻","有","等于","保卫","演变");
  4.     $wei=array('嚓茶','凉面','便当','毛豆','花生','可乐','灯泡','哈密瓜','野狼','背包','眼神','缘分','雪碧','人生','牛排','蚂蚁','飞鸟','灰狼','斑马','汉堡','悟空','巨人','绿茶','自行车','保温杯','大碗','墨镜','魔镜','煎饼','月饼','月亮','星星','芝麻','啤酒','玫瑰','大叔','小伙','哈密瓜,数据线','太阳','树叶','芹菜','黄蜂','蜜粉','蜜蜂','信封','西装','外套','裙子','大象','猫咪','母鸡','路灯','蓝天','白云','星月','彩虹','微笑','摩托','板栗','高山','大地','大树','电灯胆','砖头','楼房','水池','鸡翅','蜻蜓','红牛','咖啡','机器猫','枕头','大船','诺言','钢笔','刺猬','天空','飞机','大炮','冬天','洋葱','春天','夏天','秋天','冬日','航空','毛衣','豌豆','黑米','玉米','眼睛','老鼠','白羊','帅哥','美女','季节','鲜花','服饰','裙子','白开水','秀发','大山','火车','汽车','歌曲','舞蹈','老师','导师','方盒','大米','麦片','水杯','水壶','手套','鞋子','自行车','鼠标','手机','电脑','书本','奇迹','身影','香烟','夕阳','台灯','宝贝','未来','皮带','钥匙','心锁','故事','花瓣','滑板','画笔','画板','学姐','店员','电源','饼干','宝马','过客','大白','时光','石头','钻石','河马','犀牛','西牛','绿草','抽屉','柜子','往事','寒风','路人','橘子','耳机','鸵鸟','朋友','苗条','铅笔','钢笔','硬币','热狗','大侠','御姐','萝莉','毛巾','期待','盼望','白昼','黑夜','大门','黑裤','钢铁侠','哑铃','板凳','枫叶','荷花','乌龟','仙人掌','衬衫','大神','草丛','早晨','心情','茉莉','流沙','蜗牛','战斗机','冥王星','猎豹','棒球','篮球','乐曲','电话','网络','世界','中心','鱼','鸡','狗','老虎','鸭子','雨','羽毛','翅膀','外套','火','丝袜','书包','钢笔','冷风','八宝粥','烤鸡','大雁','音响','招牌','胡萝卜','冰棍','帽子','菠萝','蛋挞','香水','泥猴桃','吐司','溪流','黄豆','樱桃','小鸽子','小蝴蝶','爆米花','花卷','小鸭子','小海豚','日记本','小熊猫','小懒猪','小懒虫','荔枝','镜子','曲奇','金针菇','小松鼠','小虾米','酒窝','紫菜','金鱼','柚子','果汁','百褶裙','项链','帆布鞋','火龙果','奇异果','煎蛋','唇彩','小土豆','高跟鞋','戒指','雪糕','睫毛','铃铛','手链','香氛','红酒','月光','酸奶','银耳汤','咖啡豆','小蜜蜂','小蚂蚁','蜡烛','棉花糖','向日葵','水蜜桃','小蝴蝶','小刺猬','小丸子','指甲油','康乃馨','糖豆','薯片','口红','超短裙','乌冬面','冰淇淋','棒棒糖','长颈鹿','豆芽','发箍','发卡','发夹','发带','铃铛','小馒头','小笼包','小甜瓜','冬瓜','香菇','小兔子','含羞草','短靴','睫毛膏','小蘑菇','跳跳糖','小白菜','草莓','柠檬','月饼','百合','纸鹤','小天鹅','云朵','芒果','面包','海燕','小猫咪','龙猫','唇膏','鞋垫','羊','黑猫','白猫','万宝路','金毛','山水','音响','尊云','西安');
  5.     $tou_num=rand(0,331);
  6.     $do_num=rand(0,19);
  7.     $wei_num=rand(0,327);
  8.     $type = rand(0,1);
  9.     if($type==0){
  10.         $username=$tou[$tou_num].$do[$do_num].$wei[$wei_num];
  11.     }else{
  12.         $username=$wei[$wei_num].$tou[$tou_num];
  13.     }
  14.     return $username; //输出生成昵称
  15. }
复制代码
19、去除文本中指定的HTML标签
  1. function strip_selected_tags($text, $tags = array()){
  2.     $args = func_get_args();
  3.     $text = array_shift($args);
  4.     $tags = func_num_args() > 2 ? array_diff($args,array($text)):(array)$tags;
  5.     foreach ($tags as $tag){
  6.         if(preg_match_all('/<'.$tag.'[^>]*>(.*)<\/'.$tag.'>/iU', $text, $found)){
  7.             $text = str_replace($found[0],$found[1],$text);
  8.         }
  9.     }
  10.     return $text;
  11. }
复制代码
20、人民币金额友好显示:多少万、多少亿
  1. function transnum($num,$type){
  2.     //type:1单位个   2单位万
  3.     $result = array();
  4.     $leng = pow(10,2);//小数位修改最后一个数字
  5.     switch($type){
  6.         case 1:
  7.             if($num >= 10000){
  8.                 $result['num'] = intval(($num/10000)*$leng)/$leng;
  9.                 if($result['num'] >= 10000){
  10.                     $result['num'] = intval(($num/100000000)*$leng)/$leng;
  11.                     $result['rem'] = "亿";
  12.                 }else{
  13.                     $result['rem'] = "万";
  14.                 }
  15.             }else{
  16.                 $result['num'] = intval($num*$leng)/$leng;
  17.                 $result['rem'] = "";
  18.             }
  19.             break;
  20.         case 2:
  21.             if($num >= 10000){
  22.                     $result['num'] = intval(($num/10000)*$leng)/$leng;
  23.                     $result['rem'] = "亿";
  24.             }else{
  25.                 $result['num'] = intval($num*$leng)/$leng;
  26.                 $result['rem'] = "万";
  27.             }
  28.             break;
  29.     }
  30.     return $result['num'].$result['rem'];
  31. }
复制代码
21、二维数组去重
  1. /**
  2.  * 去掉二维数组中的重复项
  3.  * @param $array2D          数组
  4. * @param $keyArray         还原时字段对应的key
  5.  * @return array            去掉了重复项的数组
  6. */
  7.  function array_unique_fb($array2D,$keyArray){
  8.         $temp=array();
  9.         foreach ($array2D as $v){
  10.             $v = join(",",$v);  //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
  11.             $temp[] = $v;
  12.         }
  13.      $temp = array_unique($temp);    //去掉重复的字符串,也就是重复的一维数组
  14.         foreach ($temp as $k => $v){
  15.             //$temp[$k] = explode(",",$v);   //再将拆开的数组重新组装
  16.            $temp[$k]= array_combine($keyArray ,explode(",",trim($v)));
  17.      }
  18.         return $temp;
  19.  }
复制代码
以上就是常用PHP业务逻辑demo总结的详细内容,更多关于PHP业务逻辑资料请关注脚本之家其它相关文章!

来源:https://www.jb51.net/program/288888bu0.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具