EOT; exit; } /** * 获取随机文件名 * @param string $ext 文件后缀名, 如".png" * @return string 文件名 */ function getRandName($ext=''){ return md5(date('YmdHis').uniqid(true, true).mt_rand()) . $ext; } /** * 获取文件后缀 * @param string $name 文件名 * @return string */ function getFileExt($name){ return strtolower(pathinfo($name, PATHINFO_EXTENSION)); } /** * 获取站点地址 */ function getWebUrl() { return 'http' . (isset($_SERVER['HTTPS']) ? 's' : '') . "://{$_SERVER['HTTP_HOST']}" . substr($_SERVER['SCRIPT_NAME'],0,strrpos($_SERVER['SCRIPT_NAME'],'/')+1); } /** * 验证email地址格式 */ function checkMail($email) { if (preg_match("/^[\w\.\-]+@\w+([\.\-]\w+)*\.\w+$/", $email) && strlen($email) <= 60) { return true; } else { return false; } } /** * 验证密码合法性 */ function checkPass($pass){ if (preg_match("/^(\w){6,20}$/",$pass)) { return true; }else{ return false; } } /** * 验证用户名合法性 */ function checkNmae($name){ if (preg_match("/^[a-zA-Z0-9\x{4e00}-\x{9fa5}]+$/u",$name)) { return true; }else{ return false; } } /** * 获取用户ip地址 */ function getIp() { if (getenv('HTTP_CLIENT_IP')) { $ip = getenv('HTTP_CLIENT_IP'); } else if (getenv('HTTP_X_FORWARDED_FOR')) { $ip = getenv('HTTP_X_FORWARDED_FOR'); } else if (getenv('REMOTE_ADDR')) { $ip = getenv('REMOTE_ADDR'); } else { $ip = $_SERVER['REMOTE_ADDR']; } if (!filter_var($ip, FILTER_VALIDATE_IP)) { $ip = ''; } return $ip; } /** * 页面跳转 */ function Jump($directUrl) { header("Location: $directUrl"); exit; } /** * 取本文中间 */ function getSubstr($str,$leftStr,$rightStr){ $left = strpos($str, $leftStr); //echo '左边:'.$left; $right = strpos($str, $rightStr,$left); //echo '
右边:'.$right; if($left <= 0 or $right < $left) return ''; return substr($str, $left + strlen($leftStr), $right-$left-strlen($leftStr)); } /** * 配置文件设置 * @param array $array 配置项名称=>配置项值 * @return boot 成功返回true,失败返回false */ function configSet($array){ $config = file_get_contents('application/config.php'); foreach ($array as $key => $value) { $v = getSubstr($config,"'$key' => '","',"); $config = str_replace("'$key' => '$v',","'$key' => '$value',",$config); } return file_put_contents('application/config.php', $config); } /** * 获取配置文件信息 * @param [type] $name [description] * @return [type] [description] */ function configGet($name){ return $GLOBALS['appconfig'][$name]; } /** * 转换HTML代码函数 * * @param unknown_type $content * @param unknown_type $wrap 是否换行 */ function htmlClean($content, $nl2br = true) { $content = htmlspecialchars($content, ENT_QUOTES, 'UTF-8'); if ($nl2br) { $content = nl2br($content); } $content = str_replace(' ', '  ', $content); $content = str_replace("\t", '    ', $content); return $content; } /** * 使用get方式请求指定页面 * @param [type] $url [description] * @return [type] [description] */ function curl_get_https($url){ $curl = curl_init(); // 启动一个CURL会话 curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); $tmpInfo = curl_exec($curl); curl_close($curl); return $tmpInfo; } /** * 图片生成缩略图 * * @param string $img 预缩略的图片 * @param string $thum_path 生成缩略图路径 * @param int $max_w 缩略图最大宽度 px * @param int $max_h 缩略图最大高度 px * @return unknown */ function resizeImage($img, $thum_path, $max_w, $max_h) { if (!in_array(getFileExt($thum_path), array('jpg', 'png', 'jpeg', 'gif'))) { return false; } if (!function_exists('ImageCreate')) { return false; } $size = chImageSize($img, $max_w, $max_h); $newwidth = $size['w']; $newheight = $size['h']; $w = $size['rc_w']; $h = $size['rc_h']; if ($w <= $max_w && $h <= $max_h) { return false; } return imageCropAndResize($img, $thum_path, 0, 0, 0, 0, $newwidth, $newheight, $w, $h); } /** * 按比例计算图片缩放尺寸 * * @param string $img 图片路径 * @param int $max_w 最大缩放宽 * @param int $max_h 最大缩放高 * @return array */ function chImageSize($img, $max_w, $max_h) { $size = @getimagesize($img); $w = $size[0]; $h = $size[1]; //计算缩放比例 @$w_ratio = $max_w / $w; @$h_ratio = $max_h / $h; //决定处理后的图片宽和高 if (($w <= $max_w) && ($h <= $max_h)) { $tn['w'] = $w; $tn['h'] = $h; } else if (($w_ratio * $h) < $max_h) { $tn['h'] = ceil($w_ratio * $h); $tn['w'] = $max_w; } else { $tn['w'] = ceil($h_ratio * $w); $tn['h'] = $max_h; } $tn['rc_w'] = $w; $tn['rc_h'] = $h; return $tn; } /** * 裁剪、缩放图片 * * @param string $src_image 原始图 * @param string $dst_path 裁剪后的图片保存路径 * @param int $dst_x 新图坐标x * @param int $dst_y 新图坐标y * @param int $src_x 原图坐标x * @param int $src_y 原图坐标y * @param int $dst_w 新图宽度 * @param int $dst_h 新图高度 * @param int $src_w 原图宽度 * @param int $src_h 原图高度 */ function imageCropAndResize($src_image, $dst_path, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h) { if (function_exists('imagecreatefromstring')) { $src_img = imagecreatefromstring(file_get_contents($src_image)); } else { return false; } if (function_exists('imagecopyresampled')) { $new_img = imagecreatetruecolor($dst_w, $dst_h); imagecopyresampled($new_img, $src_img, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h); } elseif (function_exists('imagecopyresized')) { $new_img = imagecreate($dst_w, $dst_h); imagecopyresized($new_img, $src_img, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h); } else { return false; } switch (getFileExt($dst_path)) { case 'png': if (function_exists('imagepng') && imagepng($new_img, $dst_path)) { ImageDestroy($new_img); return true; } else { return false; } break; case 'jpg': default: if (function_exists('imagejpeg') && imagejpeg($new_img, $dst_path)) { ImageDestroy($new_img); return true; } else { return false; } break; case 'gif': if (function_exists('imagegif') && imagegif($new_img, $dst_path)) { ImageDestroy($new_img); return true; } else { return false; } break; } } /** * 时间转化函数 * * @param $datetemp * @param $dstr * @return string */ function smartDate($datetemp, $dstr = 'Y-m-d H:i') { $op = ''; $sec = time() - $datetemp; $hover = floor($sec / 3600); if ($hover == 0) { $min = floor($sec / 60); if ($min == 0) { $op = $sec . ' 秒前'; } else { $op = "$min 分钟前"; } } elseif ($hover < 24) { $op = "约 {$hover} 小时前"; } else { $op = date($dstr, $datetemp); } return $op; } /** * 深度转义数据 * @param array $input 待转义的数组,$_GET,$_POST * @return array 处理过的数组 */ function deepEscape($input){ foreach ($input as $key => $value) { if (is_array($value)) { //递归调用 $input[$key] = deepEscape($value); }else{ //转义 $input[$key] = addslashes($value); // HTML实体 $input[$key] = htmlClean($value); } } return $input; } /** * 转换附件大小单位 * * @param string $fileSize 文件大小 kb */ function changeFileSize($fileSize) { if ($fileSize >= 1073741824) { $fileSize = round($fileSize / 1073741824, 2) . 'GB'; } elseif ($fileSize >= 1048576) { $fileSize = round($fileSize / 1048576, 2) . 'MB'; } elseif ($fileSize >= 1024) { $fileSize = round($fileSize / 1024, 2) . 'KB'; } else { $fileSize = $fileSize . '字节'; } return $fileSize; } /** * 判断是否为手机浏览器 * @return boolean */ function is_mobile(){ $regex_match="/(nokia|iphone|android|motorola|^mot\-|softbank|foma|docomo|kddi|up\.browser|up\.link|"; $regex_match.="htc|dopod|blazer|netfront|helio|hosin|huawei|novarra|CoolPad|webos|techfaith|palmsource|"; $regex_match.="blackberry|alcatel|amoi|ktouch|nexian|samsung|^sam\-|s[cg]h|^lge|ericsson|philips|sagem|wellcom|bunjalloo|maui|"; $regex_match.="symbian|smartphone|midp|wap|phone|windows ce|iemobile|^spice|^bird|^zte\-|longcos|pantech|gionee|^sie\-|portalmmm|"; $regex_match.="jig\s browser|hiptop|^ucweb|^benq|haier|^lct|opera\s*mobi|opera\*mini|320x320|240x320|176x220"; $regex_match.=")/i"; return preg_match($regex_match, strtolower($_SERVER['HTTP_USER_AGENT'])); }