分享一些常用的PHP业务逻辑代码
项目开发中经常用到的业务逻辑代码,总结在此处,备用。
1、加密解密函数:
function encryptDecrypt($key, $string, $decrypt){ if($decrypt){ $decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($string), MCRYPT_MODE_CBC, md5(md5($key))), "12"); return $decrypted; }else{ $encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key)))); return $encrypted; } }
在使用的时候我们可以为加密的字符串,设置一个加密KEY值,解密的时候传入这个KEY值即可获得密文原文。$decrypt取值0和1时分别对应加密、解密。
2、上传图片方向纠正:
由于每个人拍照姿势都不一样,难免有人拍照上传的图片出现倒立的情况,下面这个业务逻辑可以自动纠正上传图片的方向。
$image = imagecreatefromstring(file_get_contents($_FILES['image_upload']['tmp_name'])); $exif = exif_read_data($_FILES['image_upload']['tmp_name']); if(!emptyempty($exif['Orientation'])) { switch($exif['Orientation']) { case 8: $image = imagerotate($image,90,0); break; case 3: $image = imagerotate($image,180,0); break; case 6: $image = imagerotate($image,-90,0); break; } }
3、拆分姓名中的姓氏和名字
/** * 拆分姓名(姓氏和名字) * @param string $fullname 全名(如:百里屠苏) * @return array 一维数组[0=>'姓氏',1=>'名称'] * @return array */ function splitName($fullname){ $hyphenated = array( '百里','北堂','北野','北宫','辟闾', '淳于','成公','陈生','褚师','城池', '端木','东方','东郭','东野','东门','第五','大狐','段干','段阳','第二','东宫', '公孙','公冶','公羊','公良','公西','公孟','公伯','公析','公肩','公坚','公乘','公皙','公户','公广','公仪','公祖','公玉','公仲','公上','公门','公山','高堂','高阳','郭公','谷梁','毌将','毌丘','单于','叱干','叱利','车非', '独孤','大野','独吉','达奚','东里', '哥舒','贯丘', '皇甫','黄龙','胡母','何阳','赫连','呼延','贺兰','贺若','黑齿','斛律','斛粟', '夹谷','九方','即墨','吉胡', '可频', '梁丘','闾丘','洛阳','陵尹','冷富','龙丘','令狐', '慕容','万俟','抹捻', '纳兰','南荣', '南宫','南郭','女娲','南伯','南容','南门','南野', '欧阳','欧侯', '濮阳','普周','仆固','仆散','蒲察', '青阳','漆雕','亓官','渠丘','屈突','屈卢','钳耳', '壤驷','汝嫣', '上官','少室','少叔','司徒','司马','司空','司寇','士孙','申屠','申徒','申鲜','申叔','夙沙','叔先','叔仲','叔孙','侍其','是云','索卢','厍狄', '澹台','太史','太叔','太公','屠岸','唐古','拓跋','同蹄','秃发', '闻人','巫马','微生','王孙','无庸','完颜', '夏侯','西门','信平','鲜于','轩辕','相里','新垣','徐离姓', '羊舌','羊角','延陵','於陵','伊祁','吾丘','乐正','宇文','尉迟','耶律', '诸葛','颛孙','仲孙','仲长','钟离','宗政','主父','中叔','左人','左丘','宰父','长儿','仉督','长孙','子车','子书','子桑' ); $vLength = mb_strlen($fullname, 'utf-8'); $lastname = ''; $firstname = '';//前为姓,后为名 if($vLength > 2){ $preTwoWords = mb_substr($fullname, 0, 2, 'utf-8');//取命名的前两个字,看是否在复姓库中 if(in_array($preTwoWords, $hyphenated)){ $lastname = $preTwoWords; $firstname = mb_substr($fullname, 2, 10, 'utf-8'); }else{ $lastname = mb_substr($fullname, 0, 1, 'utf-8'); $firstname = mb_substr($fullname, 1, 10, 'utf-8'); } }else if($vLength == 2){//全名只有两个字时,以前一个为姓,后一下为名 $lastname = mb_substr($fullname ,0, 1, 'utf-8'); $firstname = mb_substr($fullname, 1, 10, 'utf-8'); }else{ $lastname = $fullname; } return array($lastname, $firstname); }
4、打印输出数据到文件
/** * 打印输出数据到文件 * @param mixed $data * @param bool $replace * @param string|null $pathname */ function p($data, $replace = false, $pathname = null) { is_null($pathname) && $pathname = RUNTIME_PATH . date('Ymd') . '.txt'; $str = (is_string($data) ? $data : (is_array($data) || is_object($data)) ? print_r($data, true) : var_export($data, true)) . "\n"; $replace ? file_put_contents($pathname, $str) : file_put_contents($pathname, $str, FILE_APPEND); }
这个函数虽然很小巧,但是在调试一些内部执行数据的时候非常有用,且很方便的输出我们要查看的数据。
5、随机字符生成
/* * 随机字符生成 */ function randStr($len=6,$format='all') { switch($format) { case 'all': $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-@#~'; break; case 'char': $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-@#~'; break; case 'number': $chars='0123456789'; break; case 'charnum': $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; break; case 'verify': $chars='ABCDEFGHIJKMNPQRSTUVWXYZ23456789'; break; } mt_srand(); $password=""; while(strlen($password)<$len) $password.=substr($chars,(mt_rand()%strlen($chars)),1); return $password; }
6、PHP生成唯一订单号
/* * 生成唯一订单号 */ function CreateOrderId(){ $order_id_main = date('YmdHis') . rand(10000000,99999999); //订单号码主体长度 $order_id_len = strlen($order_id_main); $order_id_sum = 0; for($i=0; $i<$order_id_len; $i++){ $order_id_sum += (int)(substr($order_id_main,$i,1)); } //唯一订单号码(YYYYMMDDHHIISSNNNNNNNNCC) $order_id = $order_id_main . str_pad((100 - $order_id_sum % 100) % 100,2,'0',STR_PAD_LEFT); return $order_id; }
7、获取毫秒级时间戳。
关于获取毫秒级时间戳其实只需要一行代码,网上很多人专门写了很多函数去处理。因为毫秒级的时间戳是13位,int类会溢出。操作使用时可以以float类型或string类型均可。
$timestamp = substr(microtime(true)*1000,0,13);
8、获取文章中的图片
/* * 获取文章图片 */ function getContentPic($content,$num='1'){ $pattern="/<img.*?src=[\'|\"](.*?)[\'|\"].*?[\/]?>/"; preg_match_all($pattern,htmlspecialchars_decode($content),$match); if(!emptyempty($match[1]) && $num == 1){ return $match[1][0]; }else{ return $match[1]; } return ''; }
免责声明:
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络收集整理,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!
买源码 » 分享一些常用的PHP业务逻辑代码
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络收集整理,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!
买源码 » 分享一些常用的PHP业务逻辑代码