用thinkphp5开发项目一些常用的方法封装
最近公司开发项目用到thinkphp5框架,写了一些公共的方法调用,在这里写篇博客记下来,方便以后做项目用到thinkphp或者其他框架,也可以搬过去,改一下再用。
1、记录日志方法
/*** [ 写入日志 -简约]* @param array,string $log_content [内容]* @param string $keyp [文件名]* @return [type] [description]*/
function pr_log($log_content, $keyp) {//在runtime/log下生成以日期为名的文件$log_filename = RUNTIME_PATH .'log'.DS .$keyp.DS.date("Ym").DS;//判断是否是一个目录,如果不是就创建,并给读写权限!is_dir($log_filename) && mkdir($log_filename, 0755, true);if(is_array($log_content)){$log_content = json_encode($log_content,JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);}file_put_contents($log_filename.date("d").'.log', '['.date("Y-m-d H:i:s").']' .PHP_EOL . $log_content . PHP_EOL."------------------------ --------------------------".PHP_EOL, FILE_APPEND);
}
2、金额展示规则
/*** 金额展示规则,超过1万时以万为单位,低于1万时以千为单位,低于1千时以元为单位* @param string $money 金额* @return string* @author Michael_xu*/
function money_view($money)
{$data = '0元';if (($money / 10000) > 1) {$data = is_int($money / 10000) ? ($money / 10000) . '万' : rand(($money / 10000), 2) . '万';} elseif (($money / 1000) > 1) {$data = is_int($money / 1000) ? ($money / 1000) . '千' : rand(($money / 1000), 2) . '千';} else {$data = $money . '元';}return $data;
}
3、截取字符串
/*** 截取字符串* @param $start 开始截取位置* @param $length 截取长度* @return* @author Michael_xu*/
function msubstr($str, $start = 0, $length, $charset = "utf-8", $suffix = true)
{if (function_exists("mb_substr")) {$slice = mb_substr($str, $start, $length, $charset);} elseif (function_exists('iconv_substr')) {$slice = iconv_substr($str, $start, $length, $charset);if (false === $slice) {$slice = '';}} else {$re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";$re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";$re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";$re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";preg_match_all($re[$charset], $str, $match);$slice = join("", array_slice($match[0], $start, $length));}if (utf8_strlen($str) < $length) $suffix = false;return $suffix ? $slice . '...' : $slice;
}
4、数组转字符串(以逗号隔开)
/*** 数组转换字符串(以逗号隔开)* @param* @return* @author Michael_xu*/
function arrayToString($array)
{if (!is_array($array)) {$data_arr[] = $array;} else {$data_arr = $array;}$data_arr = array_filter($data_arr); //数组去空$data_arr = array_unique($data_arr); //数组去重$data_arr = array_merge($data_arr);$string = $data_arr ? ',' . implode(',', $data_arr) . ',' : '';return $string ?: '';
}
5、字符串换转数组(以逗号隔开)
/*** 字符串转换数组(以逗号隔开)* @param* @return* @author Michael_xu*/
function stringToArray($string)
{if (is_array($string)) {$data_arr = array_unique(array_filter($string));} else {$data_arr = $string ? array_unique(array_filter(explode(',', $string))) : [];}$data_arr = $data_arr ? array_merge($data_arr) : [];return $data_arr ?: [];
}
6、根据时间戳获取星期几
/*** 根据时间戳获取星期几* @param $time 要转换的时间戳*/
function getTimeWeek($time, $i = 0)
{$weekarray = array("日", "一", "二", "三", "四", "五", "六");$oneD = 24 * 60 * 60;return "星期" . $weekarray[date("w", $time + $oneD * $i)];
}
7、二维数组排序
/*** 二维数组的排序* @param array $arr 需要排序的二维数组* @param string $field 以这个数组的值来排序* @param string $direction 排序规则 SORT_ASC 升序 SORT_DESC降序* @return array 排序后的数组* @author https://beltxman.com/*/
function arraySort($arr, $field, $direction = 'SORT_DESC') {$arrSort = array();foreach($arr AS $uniqid => $row){foreach($row AS $key=>$value){$arrSort[$key][$uniqid] = $value;}}array_multisort($arrSort[$field], constant($direction), $arr);return $arr;
}
8、将秒数转换为时间 (年、天、小时、分、秒)
/*** 将秒数转换为时间 (年、天、小时、分、秒)* @param*/
function getTimeBySec($time)
{if (is_numeric($time)) {$value = array("years" => 0, "days" => 0, "hours" => 0,"minutes" => 0, "seconds" => 0,);if ($time >= 31556926) {$value["years"] = floor($time / 31556926);$time = ($time % 31556926);$t .= $value["years"] . "年";}if ($time >= 86400) {$value["days"] = floor($time / 86400);$time = ($time % 86400);$t .= $value["days"] . "天";}if ($time >= 3600) {$value["hours"] = floor($time / 3600);$time = ($time % 3600);$t .= $value["hours"] . "小时";}if ($time >= 60) {$value["minutes"] = floor($time / 60);$time = ($time % 60);$t .= $value["minutes"] . "分钟";}if ($time < 60) {$value["seconds"] = floor($time);$t .= $value["seconds"] . "秒";}return $t;} else {return (bool)FALSE;}
}
9、根据年月计算有几天
/**根据年月计算有几天*/
function getmonthByYM($param)
{$month = $param['month'] ? $param['month'] : date('m', time());$year = $param['year'] ? $param['year'] : date('Y', time());if (in_array($month, array('1', '3', '5', '7', '8', '01', '03', '05', '07', '08', '10', '12'))) {$days = '31';} elseif ($month == 2) {if ($year % 400 == 0 || ($year % 4 == 0 && $year % 100 !== 0)) {//判断是否是闰年 $days = '29';} else {$days = '28';}} else {$days = '30';}return $days;
}
10、人民币转大写
/*** 人民币转大写* @param*/
function cny($ns)
{static $cnums = array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"),$cnyunits = array("圆", "角", "分"),$grees = array("拾", "佰", "仟", "万", "拾", "佰", "仟", "亿");list($ns1, $ns2) = explode(".", $ns, 2);$ns2 = array_filter(array($ns2[1], $ns2[0]));$ret = array_merge($ns2, array(implode("", _cny_map_unit(str_split($ns1), $grees)), ""));$ret = implode("", array_reverse(_cny_map_unit($ret, $cnyunits)));return str_replace(array_keys($cnums), $cnums, $ret);
}
11、递归删除目录
/*** 递归删除目录** @param string $dir* @return void* @author Ymob*/
function delDir($dir)
{$dh = opendir($dir);while ($file = readdir($dh)) {if ($file != "." && $file != "..") {$fullpath = $dir . "/" . $file;if (!is_dir($fullpath)) {@unlink($fullpath);} else {deldir($fullpath);}}}closedir($dh);//删除当前文件夹:@rmdir($dir);
}
12、是不是手机号或者座机号
/*** 是不是手机号或者固定座机* @param $val* @return bool*/public static function isMobileOrPhone($val){$isMobile = "/^1[3456789]{1}\d{9}$/";$isPhone = "/^([0-9]{3,4}-)?[0-9]{7,8}$/";if (!preg_match($isMobile, $val) && !preg_match($isPhone, $val)) {return false;}return true;}
13、判断是否是正确的邮箱格式
/*** 判断是否是正确的邮件格式* @param $email* @return bool*/public static function isEmail($email){return preg_match('/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/', $email) ? true : false;}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
