最近公司开发项目用到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 $select 要进行排序的select结果集
* @param $field 排序的字段
* @param $order 排序方式1降序2升序
*/
function sort_select($select = array(), $field, $order = 1)
{
$count = count($select);
if ($order == 1) {
for ($i = 0; $i < $count; $i++) {
$k = $i;
for ($j = $i; $j < $count; $j++) {
if ($select[$k][$field] < $select[$j][$field]) {
$k = $j;
}
}
$temp = $select[$i];
$select[$i] = $select[$k];
$select[$k] = $temp;
}
return $select;
} else {
for ($i = 0; $i < $count; $i++) {
$k = $i;
for ($j = $i; $j < $count; $j++) {
if ($select[$k][$field] > $select[$j][$field]) {
$k = $j;
}
}
$temp = $select[$i];
$select[$i] = $select[$k];
$select[$k] = $temp;
}
return $select;
}
}
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;
}
|