$v) {
$keysvalue[$k] = $v[$keys];
}
if ($type == 'asc') {
asort($keysvalue);
} else {
arsort($keysvalue);
}
reset($keysvalue);
foreach ($keysvalue as $k => $v) {
if ($reset) {
$new_array[] = $arr[$k];
} else {
$new_array[$k] = $arr[$k];
}
}
return $new_array;
}
}
/**
* 写作的时间人性化
*
* @param int $time 写作的时间
* @return string
*/
if( ! function_exists('showWriteTime'))
{
function showWriteTime($time)
{
$interval = time() - $time;
$format = array(
'31536000' => '年',
'2592000' => '个月',
'604800' => '星期',
'86400' => '天',
'3600' => '小时',
'60' => '分钟',
'1' => '秒'
);
foreach($format as $key => $value)
{
$match = floor($interval / (int) $key );
if(0 != $match)
{
return $match . $value . '前';
}
}
return date('Y-m-d', $time);
}
}
if( ! function_exists('pairList'))
{
function pairList($list, $keyField, $valueField)
{
$pairList = array();
foreach ($list as $one) {
$pairList[$one[$keyField]] = $one[$valueField];
}
return $pairList;
}
}
/**
* 重新组装url ,如果没有host回自动添加当前host
* @param string $url
* @param array $query key=>val
* @return string
*/
function U ($url, $query = [])
{
$url = ltrim($url, '/');
$urlInfo = parse_url($url);
$aQuery = [];
if (isset($urlInfo['query']) && $urlInfo['query'] !== '') {
parse_str($urlInfo['query'],$aQuery);
}
$queryString = http_build_query(array_merge($aQuery, $query));
if(isset($urlInfo['host'])) {
$url = $urlInfo['scheme'] . '://' . $urlInfo['host'].'/admin/';
}else{
$url = request()->root() . '/admin/';
}
$url .= isset($urlInfo['path']) ? $urlInfo['path'] : '';
$url .= $queryString === '' ? '' : ('?'.$queryString);
return $url;
}
/**
* 验证角色菜单权限
*
* @param string $route 路由
* @param string $params 附带参数
* @return bool
*/
if( ! function_exists('role'))
{
function role($route, $params = [])
{
$user = \Auth::guard('admin')->user();
$role = session()->get(LOGIN_MARK_SESSION_KEY);
if($user['is_root']) {
return true;
}
$route = trim($route);
$roles = $role['role'];
if(isset($roles[$route])){
return true;
}else{
return false;
}
}
}
if( ! function_exists('dict'))
{
function dict()
{
return new App\Services\Base\Dictionary;
}
}
/**
* 隐藏部分手机号码
* @param $mobile
* @param $hide_length
* @return string
*/
if( ! function_exists('hidePartMobile'))
{
function hidePartMobile($mobile, $hide_length = 5){
$hide_length = intval($hide_length);
$hide = '';
for($i = 0; $i < $hide_length; $i++){
$hide .= '*';
}
$pattern = "/(1\d{1,2})([0-9]{". $hide_length .",". $hide_length ."})(\d+)/";
$replacement = "\$1{$hide}\$3";
return preg_replace($pattern, $replacement, $mobile);
}
}
/**
* Function echo_log
* 输出调试日志
* @param $content 输出内容
*/
if( ! function_exists('echoLog'))
{
function echoLog($content, $filename = '')
{
if(is_object($content) || is_array($content)) {
$content = var_export($content, true);
}
$log_path = storage_path() . DIRECTORY_SEPARATOR . "debug_log" . DIRECTORY_SEPARATOR;
if($filename){
$file_path = $log_path . $filename;
}else{
$file_path = $log_path . "debug_log_" . date("Ymd") . ".txt";
}
if(!file_exists($log_path)){
mkdir($log_path,0777);
}
$fp = fopen($file_path, "a");
flock($fp, LOCK_EX) ;
fwrite($fp,"执行日期:".date("Y-m-d H:i:s",time())."\n".$content."\n\n");
flock($fp, LOCK_UN);
fclose($fp);
}
}
if( ! function_exists('curlAjax'))
{
function curlAjax($url) {
$cookieStr = '';
if($_COOKIE) {
foreach ($_COOKIE as $key=>$val) {
$cookieStr .= $key . '=' . $val . ';';
}
$cookieStr = substr($cookieStr, 0,-1);
}
$headers = array(
'Content-Type' => 'text/json;charset=utf-8', // 设置为Ajax方式
'X-Requested-With' => 'XMLHttpRequest', // 设置为Ajax方式
'User-Agent' => 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36', // 设置为Ajax方式
'Referer' => 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'],
'Cookie' => $cookieStr
);
$headerArr = array();
foreach( $headers as $n => $v ) {
$headerArr[] = $n .':' . $v;
}
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headerArr);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$return = curl_exec($ch);
curl_close ( $ch );
return $return;
}
}
if( ! function_exists('img'))
{
function img($system, $system_primary = NULL, $system_key = NULL, $first = false, $pagesize = PAGE_MAX_NUMS)
{
$paramArgs = func_get_args();
$key = "system_img" . md5(serialize($paramArgs));
if(!Cache::has($key) || request('no_cache') === 'true') {
$data = \App\Services\Base\Images::getSrc($system, $system_primary, $system_key, $first, $pagesize);
\Cache::forever($key,$data);
}
$data = \Cache::get($key);
return $data;
}
}
/**
* 字符截取 支持UTF8/GBK
* @param $string
* @param $length
* @param $dot
*/
if( ! function_exists('str_cut'))
{
function str_cut($string, $length, $dot = '...') {
$strlen = strlen($string);
if($strlen <= $length) return $string;
$string = str_replace(array(' ',' ', '&', '"', ''', '“', '”', '—', '<', '>', '·', '…'), array('∵',' ', '&', '"', "'", '“', '”', '—', '<', '>', '·', '…'), $string);
$strcut = '';
if(strtolower('utf-8') == 'utf-8') {
$length = intval($length-strlen($dot)-$length/3);
$n = $tn = $noc = 0;
while($n < strlen($string)) {
$t = ord($string[$n]);
if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {
$tn = 1; $n++; $noc++;
} elseif(194 <= $t && $t <= 223) {
$tn = 2; $n += 2; $noc += 2;
} elseif(224 <= $t && $t <= 239) {
$tn = 3; $n += 3; $noc += 2;
} elseif(240 <= $t && $t <= 247) {
$tn = 4; $n += 4; $noc += 2;
} elseif(248 <= $t && $t <= 251) {
$tn = 5; $n += 5; $noc += 2;
} elseif($t == 252 || $t == 253) {
$tn = 6; $n += 6; $noc += 2;
} else {
$n++;
}
if($noc >= $length) {
break;
}
}
if($noc > $length) {
$n -= $tn;
}
$strcut = substr($string, 0, $n);
$strcut = str_replace(array('∵', '&', '"', "'", '“', '”', '—', '<', '>', '·', '…'), array(' ', '&', '"', ''', '“', '”', '—', '<', '>', '·', '…'), $strcut);
} else {
$dotlen = strlen($dot);
$maxi = $length - $dotlen - 1;
$current_str = '';
$search_arr = array('&',' ', '"', "'", '“', '”', '—', '<', '>', '·', '…','∵');
$replace_arr = array('&',' ', '"', ''', '“', '”', '—', '<', '>', '·', '…',' ');
$search_flip = array_flip($search_arr);
for ($i = 0; $i < $maxi; $i++) {
$current_str = ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i];
if (in_array($current_str, $search_arr)) {
$key = $search_flip[$current_str];
$current_str = str_replace($search_arr[$key], $replace_arr[$key], $current_str);
}
$strcut .= $current_str;
}
}
return $strcut.$dot;
}
}
/**
* 取得文件扩展
*
* @param $filename 文件名
* @return 扩展名
*/
if( ! function_exists('fileExt'))
{
function fileExt($filename)
{
return strtolower(trim(substr(strrchr($filename, '.'), 1, 10)));
}
}
/**
* 过滤参数
*
* @param $param 参数数组
* @param $allowKey 被允许的KEY集合数组
* @return 扩展名
*/
if( ! function_exists('filterParam'))
{
function filterParam(array $param, array $allowKey)
{
$data = array();
foreach ($param AS $key => $val) {
if(in_array($key, $allowKey)) $data[$key] = $val;
}
return $data;
}
}
if(!function_exists('list_to_tree')) {
function list_to_tree($list, $pk='id',$pid = 'pid',$child = '_child',$root=0)
{
// 创建Tree
$tree = array();
if(is_array($list)) {
// 创建基于主键的数组引用
$refer = array();
foreach ($list as $key => $data) {
$refer[$data[$pk]] =& $list[$key];
}
foreach ($list as $key => $data) {
// 判断是否存在parent
$parentId = $data[$pid];
if ($root == $parentId) {
$tree[] =& $list[$key];
}else{
if (isset($refer[$parentId])) {
$parent =& $refer[$parentId];
$parent[$child][] =& $list[$key];
}
}
}
}
return $tree;
}
}
/**
* 判断远程文件是否存在
* @param unknown $url
* @return boolean
*/
function check_remote_file_exists($url)
{
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_NOBODY, true);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
$result = curl_exec($curl);
$found = false;
if ($result !== false)
{
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($statusCode == 200)
{
$found = true;
}
}
curl_close($curl);
return $found;
}
if( ! function_exists('getCacheKey')) {
/**
* 更具参数获取一个唯一的缓存KEY
* @param string $name 名称
* @param obj|array|string $data 参数
*/
function getCacheKey($name,$data) {
return $name . md5(serialize($data));
}
}
function isMobile()
{
// 如果有HTTP_X_WAP_PROFILE则一定是移动设备
if (isset ($_SERVER['HTTP_X_WAP_PROFILE']))
{
return true;
}
// 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
if (isset ($_SERVER['HTTP_VIA']))
{
// 找不到为false,否则为true
return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;
}
// 脑残法,判断手机发送的客户端标志,兼容性有待提高
if (isset ($_SERVER['HTTP_USER_AGENT']))
{
$clientkeywords = array ('nokia',
'sony',
'ericsson',
'mot',
'samsung',
'htc',
'sgh',
'lg',
'sharp',
'sie-',
'philips',
'panasonic',
'alcatel',
'lenovo',
'iphone',
'ipod',
'blackberry',
'meizu',
'android',
'netfront',
'symbian',
'ucweb',
'windowsce',
'palm',
'operamini',
'operamobi',
'openwave',
'nexusone',
'cldc',
'midp',
'wap',
'mobile'
);
// 从HTTP_USER_AGENT中查找手机浏览器的关键字
if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT'])))
{
return true;
}
}
// 协议法,因为有可能不准确,放到最后判断
if (isset ($_SERVER['HTTP_ACCEPT']))
{
// 如果只支持wml并且不支持html那一定是移动设备
// 如果支持wml和html但是wml在html之前则是移动设备
if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html'))))
{
return true;
}
}
return false;
}
/**
* post 提交
* @param strint $url
* @param array $post_data
* @return mixed
*/
function formPost($url, $post_data=array(), $timeout=60, $userpwd = null)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); // 设置超时限制防止死循环
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data));
// curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data));
if ($userpwd) {
curl_setopt($ch, CURLOPT_HTTPAUTH , CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD , $userpwd);
}
$result = curl_exec($ch);
if (curl_errno($ch)) {
// echo curl_error($ch);exit;
}
curl_close($ch); // 关键CURL会话
// CBase::write_log('formPost' . date("Ymd") . ".log", $result);
return $result;
}
/***
* @param string $position 图片保存地址
* @return string
*/
function editor($position='local') {
$token = csrf_token();
$editer = <<
HTML;
return $editer;
}
if( ! function_exists('widget'))
{
function widget($widgetName)
{
$widgetNameEx = explode('.', $widgetName);
if( ! isset($widgetNameEx[1])) return false;
$widgetClass = 'App\\Widget\\'.$widgetNameEx[0].'\\'.$widgetNameEx[1];
if(app()->bound($widgetName)) return app()->make($widgetName);
app()->singleton($widgetName, function() use ($widgetClass)
{
return new $widgetClass();
});
return app()->make($widgetName);
}
}
//
//if( ! function_exists('sendSms')) {
// // return string 'success' 为成功
// function sendSms($msg, $mobile){
// $post_data = array();
// $post_data['un'] ="N9304000";
// $post_data['pw'] = "Mask751002@";
// $post_data['msg']="【小洲蔬菜】$msg";
// $post_data['phone'] =$mobile;
// $post_data['rd']=1;
//
// $post_data['needstatus']='true';
// $url='https://sms.253.com/msg/send';
// $data=http_build_query($post_data);
//
// if(function_exists('curl_init')){
// $curl = curl_init();
// curl_setopt($curl, CURLOPT_URL, $url);
//
// if (!empty($data)){
// curl_setopt($curl, CURLOPT_POST, 1);
// curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
// }
// curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// $output = curl_exec($curl);
// curl_close($curl);
// $result=preg_split("/[,\r\n]/",$output);
// if($result[1]==0){
// $res = "success";
// }else{
// $res = "curl error:".$result[1];
// }
// }elseif(function_exists('file_get_contents')){
// $output=file_get_contents($url.$data);
// $result=preg_split("/[,\r\n]/",$output);
// if($result[1]==0){
// $res = "success";
// }else{
// $res = "error:".$result[1];
// }
// }else{
// $res="error";
// }
// return $res;
// }
//}
//
//if( ! function_exists('sendMultiSms')) {
// // 群发短信 $mobiles电话号码之间用英文逗号分割
// // return string 'success' 为成功
// function sendMultiSms($msg, $mobiles){
// $post_data = array();
// $post_data['un'] ="M3512322";
// $post_data['pw'] = "N8ecbXn0A7dc18";
// $post_data['msg']="【小洲蔬菜】$msg 回复TD退订";
// $post_data['phone'] =$mobiles;
// $post_data['rd']=1;
//
// $post_data['needstatus']='true';
// $url='https://sms.253.com/msg/send';
// $data=http_build_query($post_data);
//
// if(function_exists('curl_init')){
// $curl = curl_init();
// curl_setopt($curl, CURLOPT_URL, $url);
//
// if (!empty($data)){
// curl_setopt($curl, CURLOPT_POST, 1);
// curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
// }
// curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// $output = curl_exec($curl);
// curl_close($curl);
// $result=preg_split("/[,\r\n]/",$output);
// if($result[1]==0){
// $res = "success";
// }else{
// $res = "curl error:".$result[1];
// }
// }elseif(function_exists('file_get_contents')){
// $output=file_get_contents($url.$data);
// $result=preg_split("/[,\r\n]/",$output);
// if($result[1]==0){
// $res = "success";
// }else{
// $res = "error:".$result[1];
// }
// }else{
// $res="error";
// }
// return $res;
// }
//}
//
//
//if( ! function_exists('sendCaixin')) {
// //return true or false
// function sendCaixin($mobile){
//
// $post_data =$data =$msgdata = array();
//
// $url ="http://www.baidu.com";//回调URL
// $key ="6MG5jNK4Q15907";//密码
////文字body
// $data['frame']="1"; //文字标识
// $data['part'] ="1";//文字标识
// $data['type']="1" ;
// $data['content']=base64_encode('亲爱的朋友,“芜湖小洲蔬菜”,芜湖人的掌上菜篮子,已是我每天买菜必备工具。好东西首先想到了您,赶快关注使用吧!');
//
////图片body
// $msgdata['frame']="1";
// $msgdata['part'] ="2";//图片标识
// $msgdata['type']="2" ;//图片标识
// $msgdata['content']=base64_encode(file_get_contents(public_path('app/wap/images/')."qrcode.jpg"));//图片
//
// $post_data['account'] ="C8636841";//账号
// $post_data['ext_id']="72175534217316595927";//自传参数
// $post_data['msg']=json_encode(array($data,$msgdata)) ;//json
// $post_data['phones'] = $mobile;//手机
// $post_data['timestamp'] = time();//时间戳
//
// $post_data['title']= '芜湖小洲蔬菜'; //标题
//
// $sign ='account=' . $post_data['account'].'ext_id=' . $post_data['ext_id'].'msg=' . $post_data['msg'].'phones=' . $post_data['phones'].'timestamp=' . $post_data['timestamp'].'title=' . $post_data['title'].'url=' . $url.'key=' . $key;
// $sign=md5($sign); //加密
// $post_data['sign']=$sign;
// $post_data['url']=$url;
//
// $url='http://caixin.253.com/api/send?';
// $data = http_build_query($post_data);
//
// if(function_exists('curl_init')){
// $curl = curl_init();
// curl_setopt($curl, CURLOPT_URL, $url);
//
// if (!empty($data)){
// curl_setopt($curl, CURLOPT_POST, 1);
// curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
// }
// curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// $output = curl_exec($curl);
// curl_close($curl);
// $res = json_decode($output);
// if(is_array($res)&&$res['code']==1){
// return true;
// }
//
// }
// return false;
// }
//}
if( ! function_exists('object_to_array'))
{
function object_to_array($obj){
$_arr=is_object($obj)?get_object_vars($obj):$obj;
$arr = null;
foreach($_arr as $key=>$val){
$val=(is_array($val))||is_object($val)?$this->object_to_array($val):$val;
$arr[$key]=$val;
}
return $arr;
}
}