/** * 是否为手机端 * @return bool */ function is_Mobile() { // 如果有HTTP_X_WAP_PROFILE则一定是移动设备 if (isset($_SERVER['HTTP_X_WAP_PROFILE'])) { return true; } // 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息 if (isset($_SERVER['HTTP_VIA'])) { // 找不到为flase,否则为true return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false; } // 脑残法,判断手机发送的客户端标志,兼容性有待提高。其中'MicroMessenger'是电脑微信 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', 'MicroMessenger'); // 从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; }
/** * 提取富文本中的纯文字 * @param $string 富文本内容 * @return string */ function StringExtractionText($string) { // 把一些预定义的 HTML 实体转换为字符 // 预定义字符是指:,&等有特殊含义(,用于链接签,&用于转义),不能直接使用 $html_string = htmlspecialchars_decode($string); // 将空格去除 $content = str_replace(" ", "", $html_string); // 去除字符串中的 HTML 标签 $contents = strip_tags($content); return $contents; }
/** * 判断当前是否是微信浏览器 * 一般放在common中 * 返回1是,0否 */ function isWeixin() { if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false) { return 1; } return 0; }
/** * 输入天数的时间戳,返回该时间戳的发布时间在多久之前 * @param int $time 时间戳 * @return string 返回的时间 */ function formatTime($time) { $way = time() - $time; $r = ''; if($way < 60) { $r = '刚刚'; }else if($way >= 60 && $way =3600 && $way =86400 && $way =2592000 && $way <15552000) { $r = floor($way/2592000).'个月前'; }else { $r = date("Y-m-d H:i:s",$time); } return $r; }
/** * 无限级分类数据处理(数据库数据) * @param $data 数据库查询数据 * @param string $id 主键 * @param string $pid 上级 * @param string $child 子级名 * @param int $max_pid 最高级pid * @return array|mixed 返回处理好的数组 */ function disposeInfiniteData($data, $id = 'id', $pid = 'pid', $child = "child", $max_pid = 0) { $newData = []; //数据库中信息预处理 foreach ($data as $v) { $newData[$v[$id]] = $v; } $return_arr = []; foreach ($newData as $k => $v) { if ($v['pid'] == $max_pid) { $return_arr[] =& $newData[$k]; } else { $newData[$v[$pid]][$child][] =& $newData[$k]; } } return $return_arr; }
/** * 判断两个时间之间相差的月份 * @param $time1 * @param $time2 * @return float|int */ function get_month_interval($time1, $time2) { if($time1>$time2){ $t=$time1; $time1=$time2; $time2=$t; } $y1=date('Y',$time1); $y2=date('Y',$time2); $m1=date('m',$time1); $m2=date('m',$time2); $months=($y2-$y1)*12+($m2-$m1); return $months; }