清華大佬耗費三個月吐血整理的幾百G的資源,免費分享!....>>>
/* * ************************* * 生成隨機字符串,可以自己擴展 //若想唯一,只需在開頭加上用戶id * $type可以為:upper(只生成大寫字母),lower(只生成小寫字母),number(只生成數(shù)字) * $len為長度,定義字符串長度 * mark 2017/8/15 * ************************** */ function _random($type, $len = 0) { $new = ''; $string = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; //數(shù)據(jù)池 if ($type == 'upper') { for ($i = 0; $i < $len; $i++) { $new .= $string[mt_rand(36, 61)]; } return $new; } if ($type == 'lower') { for ($i = 0; $i < $len; $i++) { $new .= $string[mt_rand(10, 35)]; } return $new; } if ($type == 'number') { for ($i = 0; $i < $len; $i++) { $new .= $string[mt_rand(0, 9)]; } return $new; } }
//計算該月有幾天 function getdaysInmonth($month, $year) { $days = ''; if ($month == 1 || $month == 3 || $month == 5 || $month == 7 || $month == 8 || $month == 10 || $month == 12) $days = 31; else if ($month == 4 || $month == 6 || $month == 9 || $month == 11) $days = 30; else if ($month == 2) { if (isLeapyear($year)) { $days = 29; } else { $days = 28; } } return ($days); } //判斷是否為潤年 function isLeapyear($year) { if ((($year % 4) == 0) && (($year % 100) != 0) || (($year % 400) == 0)) { return (true); } else { return (false); } }
//生成訂單15位 function auto_order($ord = 0) { //自動生成訂單號 傳入?yún)?shù)為0 或者1 0為本地 1為線上訂單 if ($ord == 0) { $str = '00' . time() . rand(1000, 9999); //00 本地訂單 } else { $str = '99' . time() . rand(1000, 9999); //11 線上訂單 } return $str; } //生成訂單15位 function auto_new_order($ord = 0) { srand(time()); //自動生成訂單號 傳入?yún)?shù)為0 或者1 0為本地 1為線上訂單 if ($ord == 0) { $str = '00' . time() . mt_rand(100000,999999); //00 本地訂單 } else { $str = '11' . time() . mt_rand(100000,999999); //11 線上訂單 } return $str; }
/** * 檢測是否為UTF8編碼 * @param $string 檢測字符串 * @return bool */ function is_utf8($string) { return preg_match('%^(?: [\x09\x0A\x0D\x20-\x7E] # ASCII | [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte | \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte | \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates | \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3 | [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15 | \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16 )*$%xs', $string); }
//處理json字符中的特殊字符 function getJsonToArr($result,$return_array=true) { $tempArr = NULL; $result = preg_replace('/([^\\\])(":)(\d{9,})(,")/i', '${1}${2}"${3}"${4}', $result); //taobao bug,number >2^32 $tempArr = json_decode($result, $return_array); if ($tempArr == NULL) { $patterns = array('/,+\s*\}/', '/,+\s*\]/', '/"\s+|\s+"/', '/\n|\r|\t/','/\\\/','/ss+/'); $replacements = array('}', ']', '"', ' ','',' '); $result = preg_replace($patterns, $replacements, $result); $tempArr = json_decode($result, $return_array); } return $tempArr; } //非法字符過濾函數(shù) function has_unsafeword($str) { $regex = "/\/|\~|\!|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\_|\+|\{|\}|\:|\<|\>|\?|\[|\]|\.|\/|\;|\'|\`|\=|\\\|\|/"; return preg_replace($regex,"",$str); } //去空格,以及字符添加斜杠 function _trim(&$value) { Return addslashes(trim($value)); }
/** * 將多維數(shù)組轉為一維數(shù)組 * @param array $arr * @return array */ function ArrMd2Ud($arr) { #將數(shù)值第一元素作為容器,作地址賦值。 $ar_room = &$arr[key($arr)]; #第一容器不是數(shù)組進去轉呀 if (!is_array($ar_room)) { #轉為成數(shù)組 $ar_room = array($ar_room); } #指針下移 next($arr); #遍歷 while (list($k, $v) = each($arr)) { #是數(shù)組就遞歸深挖,不是就轉成數(shù)組 $v = is_array($v) ? call_user_func(__FUNCTION__, $v) : array($v); #遞歸合并 $ar_room = array_merge_recursive($ar_room, $v); #釋放當前下標的數(shù)組元素 unset($arr[$k]); } return $ar_room; }
/** * 判斷是PC端還是wap端訪問 * @return type判斷手機移動設備訪問 */ function isMobile() { // 如果有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; } // 腦殘法,判斷手機發(fā)送的客戶端標志,兼容性有待提高 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; } } // 協(xié)議法,因為有可能不準確,放到最后判斷 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; } //判斷是否為安卓手機 public function isAndroid() { if(isset($_SERVER['HTTP_USER_AGENT'])){ $agent = strtolower($_SERVER['HTTP_USER_AGENT']); if(strpos($agent,'android') !== false) return true; } return false; } //判斷是否為iphone或者ipad public function isIos() { if(isset($_SERVER['HTTP_USER_AGENT'])){ $agent = strtolower($_SERVER['HTTP_USER_AGENT']); if(strpos($agent, 'iphone')||strpos($agent, 'ipad')) return true; } return false; } //判斷是否為微信內置瀏覽器打開 public function isWechet() { if(isset($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false){ return true; } return false; } //整合到一起,判斷當前設備,1:安卓;2:IOS;3:微信;0:未知 public function isDevice() { if($_SERVER['HTTP_USER_AGENT']){ $agent = strtolower($_SERVER['HTTP_USER_AGENT']); if(strpos($agent, 'micromessenger') !== false) return 3; elseif(strpos($agent, 'iphone')||strpos($agent, 'ipad')) return 2; else return 1; } return 0; }
/** * 日期轉換成幾分鐘前 */ public function formatTime($date) { $timer = strtotime($date); $diff = $_SERVER['REQUEST_TIME'] - $timer; $day = floor($diff / 86400); $free = $diff % 86400; if($day > 0) { if(15 < $day && $day <30){ return "半個月前"; }elseif(30 <= $day && $day <90){ return "1個月前"; }elseif(90 <= $day && $day <187){ return "3個月前"; }elseif(187 <= $day && $day <365){ return "半年前"; }elseif(365 <= $day){ return "1年前"; }else{ return $day."天前"; } }else{ if($free>0){ $hour = floor($free / 3600); $free = $free % 3600; if($hour>0){ return $hour."小時前"; }else{ if($free>0){ $min = floor($free / 60); $free = $free % 60; if($min>0){ return $min."分鐘前"; }else{ if($free>0){ return $free."秒前"; }else{ return '剛剛'; } } }else{ return '剛剛'; } } }else{ return '剛剛'; } } }
/** * 截取長度 */ public function getSubString($rawString,$length='100',$etc = '...',$isStripTag=true){ $rawString = str_replace('_baidu_page_break_tag_', '', $rawString); $result = ''; if($isStripTag) $string = html_entity_decode(trim(strip_tags($rawString)), ENT_QUOTES, 'UTF-8'); else $string = trim($rawString); $strlen = strlen($string); for ($i = 0; (($i < $strlen) && ($length > 0)); $i++){ if ($number = strpos(str_pad(decbin(ord(substr($string, $i, 1))), 8, '0', STR_PAD_LEFT), '0')) { if ($length < 1.0){ break; } $result .= substr($string, $i, $number); $length -= 1.0; $i += $number - 1; }else{ $result .= substr($string, $i, 1); $length -= 0.5; } } if($isStripTag) $result = htmlspecialchars($result, ENT_QUOTES, 'UTF-8'); if ($i < $strlen){ $result .= $etc; } return $result; }
/** * utf-8和gb2312自動轉化 * @param unknown $string * @param string $outEncoding * @return unknown|string */ function safeEncoding($string,$outEncoding = 'UTF-8') { $encoding = "UTF-8"; for($i = 0; $i < strlen ( $string ); $i ++) { if (ord ( $string {$i} ) < 128) continue; if ((ord ( $string {$i} ) & 224) == 224) { // 第一個字節(jié)判斷通過 $char = $string {++ $i}; if ((ord ( $char ) & 128) == 128) { // 第二個字節(jié)判斷通過 $char = $string {++ $i}; if ((ord ( $char ) & 128) == 128) { $encoding = "UTF-8"; break; } } } if ((ord ( $string {$i} ) & 192) == 192) { // 第一個字節(jié)判斷通過 $char = $string {++ $i}; if ((ord ( $char ) & 128) == 128) { // 第二個字節(jié)判斷通過 $encoding = "GB2312"; break; } } } if (strtoupper ( $encoding ) == strtoupper ( $outEncoding )) return $string; else return @iconv ( $encoding, $outEncoding, $string ); }
/** *對內容中的關鍵詞添加鏈接 *只處理第一次出現(xiàn)的關鍵詞,對已有鏈接的關鍵不會再加鏈接,支持中英文 *$content:string 原字符串 *$keyword:string 關鍵詞 *$link:string,鏈接 */ function yang_keyword_link($content,$keyword,$link){ //排除圖片中的關鍵詞 $content = preg_replace( '|(<img[^>]*?)('.$keyword.')([^>]*?>)|U', '$1%&&&&&%$3', $content); $regEx = '/(?!((<.*?)|(<a.*?)))('.$keyword.')(?!(([^<>]*?)>)|([^>]*?<\/a>))/si'; $url='<a href="'.$link.'" target="_blank" class="content_guanjianci">'.$keyword.'</a>'; $content = preg_replace($regEx,$url,$content,1); //還原圖片中的關鍵詞 $content=str_replace('%&&&&&%',$keyword,$content); return $content; }