|
<?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];
}
|