赛亿官网

common.php 7.1KB

    <?php // +---------------------------------------------------------------------- // | ThinkPHP [ WE CAN DO IT JUST THINK ] // +---------------------------------------------------------------------- // | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved. // +---------------------------------------------------------------------- // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) // +---------------------------------------------------------------------- // | Author: 流年 <liu21st@gmail.com> // +---------------------------------------------------------------------- // 应用公共文件 /**inet_aton() * 将ip地址转为整数 */ function print_json($data) { echo json_encode($data); } function inet_aton($ip = '') { $array = array(); $ipn = 0; if ($ip != '') { $array = explode('.', $ip); $arr = array_reverse($array); $dd = 256; $ipn = 0; for ($i = 0; $i < 4; $i ++) { $ipn += $arr[$i]*pow($dd, $i); } } return $ipn; } /**2017-11-15 * inet_ntoa() * 将数据库取出来的ip整数形转为ip地址 * 参数说明 $dd=256;第一次对256取余活的ip地址第4个,第二次活的第三个,依次类推 */ function inet_ntoa($ip = '0') { $array=array(); $dd=256; for ($i=4; $i>0; $i--) { $array[$i] = $ip%$dd; $ip = intval(floor($ip/$dd)); } return $array[1].'.'.$array[2].'.'.$array[3].'.'.$array[4]; } /** * 数组去首尾空格 */ function trim_value(&$value) { if (!is_array($value)) { $value = trim($value); } else { $value = trim_array($value); } } function trim_array($arr) { array_walk($arr, 'trim_value'); return $arr; } //获取浏览器信息 function browser_info() { if (!empty($_SERVER['HTTP_USER_AGENT'])) { $br = $_SERVER['HTTP_USER_AGENT']; if (preg_match('/MSIE/i', $br)) { $br = 'MSIE'; } elseif (preg_match('/Firefox/i', $br)) { $br = 'Firefox'; } elseif (preg_match('/Edge/i', $br)) { $br = 'Edge'; } elseif (preg_match('/Chrome/i', $br)) { $br = 'Chrome'; } elseif (preg_match('/Safari/i', $br)) { $br = 'Safari'; } elseif (preg_match('/Opera/i', $br)) { $br = 'Opera'; } else { $br = 'Other'; } return $br; } else { return 'unknow'; } } //获取操作系统 function os_info() { if (!empty($_SERVER['HTTP_USER_AGENT'])) { $os = $_SERVER['HTTP_USER_AGENT']; if (preg_match('/win/i', $os)) { $os = 'Windows'; } elseif (preg_match('/mac/i', $os)) { $os = 'MAC'; } elseif (preg_match('/linux/i', $os)) { $os = 'Linux'; } elseif (preg_match('/unix/i', $os)) { $os = 'Unix'; } elseif (preg_match('/bsd/i', $os)) { $os = 'BSD'; } else { $os = 'Other'; } return $os; } else { return 'unknow'; } } /*无限级分类*/ function make_tree($list, $pk = 'id', $pid = 'pid', $child = 'child', $root = 0) { $tree=array(); foreach ($list as $key => $val) { if ($val[$pid]==$root) { unset($list[$key]); if (!empty($list)) { $child = make_tree($list, $pk, $pid, $child, $val[$pk]); if (!empty($child)) { $val['child']=$child; } else { $val['child']= array(); } } $tree[]=$val; } } return $tree; } function obj_tree($list, $pk = 'id', $pid = 'pid', $child = 'child', $root = 0) { $tree=array(); foreach ($list as $key => $val) { if ($val->pid == $root) { unset($list->$key); if (!empty($list)) { $child = obj_tree($list, $pk, $pid, $child, $val[$pk]); if (!empty($child)) { $val->child=$child; } else { $val->child = array(); } } $tree[]=$val; } } return $tree; } /** * 生成缩略图 */ function make_thumb($filename, $width = 364, $height = 168, $mode = 6) { $file = ROOT_PATH . 'public' . DS . 'uploads'. DS . $filename; $ext = pathinfo($file, PATHINFO_EXTENSION); $thumbname = str_replace('.' . $ext, '', $filename); $thumbname .='_thumb.' . $ext; $image = \think\Image::open($file); $result = $image->thumb($width, $height, $mode)->save(ROOT_PATH . 'public' . DS . 'uploads'. DS . $thumbname); if ($result) { return $thumbname; } else { return false; } } /** * 使用递归遍历获取文件夹的大小 */ function get_dir_size($dirname) { static $tot; //这里把$tot定义为静态的,表示$tot全局只有这一个变量 $ds = opendir($dirname); //创建一个目录资源, 传入的目录就是资源 while ($file = readdir($ds)) { //从目录中读取到条目 //这里的$path 表示这个路径下的文件夹,如果不这么去定义,里边执行递归语句的时候,找不到是那个文件夹 $path = $dirname . "/" . $file; //判断,如果是 . 或者 ..的目录就过滤掉 if ($file != "." && $file != "..") { if (is_dir($path)) { //判断如果找到的是目录 get_dir_size($path); //如果得到是文件夹,然后递归调用一次方法传入的$path文件夹路径就是判断得到的文件夹赋值给$dirname } else { $tot += filesize($path); } } } return $tot; } /** * 递归删除文件夹 */ function deldir($path) { //如果是目录则继续 if (is_dir($path)) { //扫描一个文件夹内的所有文件夹和文件并返回数组 $p = scandir($path); foreach ($p as $val) { //排除目录中的.和.. if ($val != "." && $val != "..") { //如果是目录则递归子目录,继续操作 if (is_dir($path . $val)) { //子目录中操作删除文件夹和文件 deldir($path . $val . '/'); //目录清空后删除空文件夹 @rmdir($path . $val . '/'); } else { //如果是文件直接删除 unlink($path . $val); } } } } } /** * 获取指定月份的第一天开始和最后一天结束的时间戳 * * @param int $y 年份 $m 月份 * @return array(本月开始时间,本月结束时间) */ function mFristAndLast($y = "", $m = ""){ if ($y == "") $y = date("Y"); if ($m == "") $m = date("m"); $m = sprintf("%02d", intval($m)); $y = str_pad(intval($y), 4, "0", STR_PAD_RIGHT); $m>12 || $m<1 ? $m=1 : $m=$m; $firstday = strtotime($y . $m . "01000000"); $firstdaystr = date("Y-m-01", $firstday); $lastday = strtotime(date('Y-m-d 23:59:59', strtotime("$firstdaystr +1 month -1 day"))); return [ "firstday" => $firstday, "lastday" => $lastday]; }