6 && preg_match("/^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/", $email); } /** * 检测QQ号 */ public static function isQQ($qq){ return preg_match("/^[1-9]\d{4,10}$/",$qq) ; } /** * 是否为中文名字 * @param $name * @return int */ public static function isChineseName($name) { return preg_match('/^([\xe4-\xe9][\x80-\xbf]{2}){2,15}$/', $name); } /*** * 产生随机数 * @param $length * @param int $numeric * @return string */ public static function random($length, $numeric = 0) { PHP_VERSION < '4.2.0' ? mt_srand((double)microtime() * 1000000) : mt_srand(); $seed = base_convert(md5(print_r($_SERVER, 1).microtime()), 16, $numeric ? 10 : 35); $seed = $numeric ? (str_replace('0', '', $seed).'012340567890') : ($seed.'zZ'.strtoupper($seed)); $hash = ''; $max = strlen($seed) - 1; for($i = 0; $i < $length; $i++) { $hash .= $seed[mt_rand(0, $max)]; } return $hash; } public static function bbcode($message) { $__face_title = array('大笑','难过','示爱','闭嘴','傻了','得意','眨眼','呲牙','大哭','古板','发呆','微笑','调皮','女孩','困惑','发怒','酷','嘘','想到了','差劲','听音乐', '天使','出虚汗','打瞌睡','睡','松了口气','哈欠','发烧了','吐','快哭了','宴会','熟睡','拥抱','打瞌睡2','哈欠2','疑问','晕','流口水','再见','吓','抽烟','流汗','下雨了','呆滞', '怪物','发抖','魔鬼','小丑','狗','猫','爱心','心碎','吻','奖杯','炸弹','蛋糕','波动','太阳','月亮','星星','礼物','电话中','玫瑰','便便','饮料','气球','闹钟','邮件','彩虹', '幽灵','忍者','猪头'); foreach($__face_title as $key=>$value){ if(file_exists(public_path().'/image/face2/'.($key+1).'.png')){ $face_index[$key] = ''; $__face_title[$key] = '['.$__face_title[$key].']'; } } if(isset($face_index)) $message = str_replace($__face_title, $face_index, $message); return (str_replace(array("\n", "\t", ' ', ' '), array('
', '        ', '   ', '  '), $message)); } /** * 检查字符串格式为JSON * @param $input * @return bool */ public static function isJson($input) { json_decode($input); return (json_last_error() == JSON_ERROR_NONE); } /** * 格式化数字,如: 1024->1k * @param $size * @return string *todo: Using fileSize function formatsize($size) { $prec=3; $size = round(abs($size)); $units = array(0=>" B ", 1=>" KB", 2=>" MB", 3=>" GB", 4=>" TB"); if ($size==0) return str_repeat(" ", $prec)."0$units[0]"; $unit = min(4, floor(log($size)/log(2)/10)); $size = $size * pow(2, -10*$unit); $digi = $prec - 1 - floor(log($size)/log(10)); $size = round($size * pow(10, $digi)) * pow(10, -$digi); return $size.$units[$unit]; }*/ //获取字符串 static public function getstr($string, $length, $in_slashes=0, $out_slashes=0, $censor=0, $bbcode=0, $html=0) { return self::strLen($string, $length); } //取消HTML代码 static public function shtmlspecialchars($string) { if(is_array($string)) { foreach($string as $key => $val) { $string[$key] = Str::shtmlspecialchars($val); } } else { $string = preg_replace('/&((#(\d{3,5}|x[a-fA-F0-9]{4})|[a-zA-Z][a-z0-9]{2,5});)/', '&\\1', str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string)); } return $string; } //去掉slassh static public function sstripslashes($string) { if(is_array($string)) { foreach($string as $key => $val) { $string[$key] = Str::sstripslashes($val); } } else { $string = stripslashes($string); } return $string; } //SQL ADDSLASHES static public function saddslashes($string) { if(is_array($string)) { foreach($string as $key => $val) { $string[$key] = Str::saddslashes($val); } } else { $string = addslashes($string); } return $string; } //连接字符 static public function simplode($ids) { return "'".implode("','", $ids)."'"; } static public function fileSize($size) { $size = max(0, (int)$size); $units = array( 'b', 'Kb', 'Mb', 'Gb', 'Tb', 'Pb', 'Eb', 'Zb', 'Yb'); $power = $size > 0 ? floor(log($size, 1024)) : 0; return number_format($size / pow(1024, $power), 2, '.', ',') . $units[$power]; } static public function strlenSpace($str){ return (strlen($str) + mb_strlen($str,'UTF8')) / 2; } static public function strLen($str, $length, $ellipsis = true) { if($ellipsis) $end = '...'; else $end = null; if(mb_strwidth($str, "utf8") > $length) { $str = mb_strimwidth($str, 0, $length, $end, "utf8"); } return $str; } static public function utf8Encode($data) { if(is_array($data)){ foreach($data as &$item){ if(is_array($item)){ $item = self::utf8Encode($item); }else{ if($item && !json_encode($item)) $item = utf8_encode($item); } } }else{ $data = utf8_encode($item); } return $data; } //传说截取字符串是等长的,但是发现结果并不是那样的。 static function spaceSubStr($str,$len,$ellipsis = true,$encode='utf8'){ if($encode!='utf8'){ $str = mb_convert_encoding($str,'utf8',$encode); } $osLen = mb_strlen($str); if($osLen<=$len){ return $str; } $string = mb_substr($str,0,$len,'utf8'); $sLen = mb_strlen($string,'utf8'); $bLen = strlen($string); $sCharCount = (3*$sLen-$bLen)/2; if($osLen<=$sCharCount+$len){ $arr = preg_split('/(?0){ $sCharCount = $sCharCount-1; }else { $sCharCount = $sCharCount-2; } if($sCharCount<=0){ break; } $string.=$value; } return $string; } static function addLink($text) { $pattern = '#\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))#'; return preg_replace_callback($pattern, 'self::auto_link_text_callback', $text); } private static function auto_link_text_callback($matches) { $max_url_length = 50; $max_depth_if_over_length = 2; $ellipsis = '…'; $url_full = $matches[0]; $url_short = ''; if (false && strlen($url_full) > $max_url_length) { $parts = parse_url($url_full); $url_short = $parts['scheme'] . '://' . preg_replace('/^www\./', '', $parts['host']) . '/'; $path_components = explode('/', trim($parts['path'], '/')); foreach ($path_components as $dir) { $url_string_components[] = $dir . '/'; } if (!empty($parts['query'])) { $url_string_components[] = '?' . $parts['query']; } if (!empty($parts['fragment'])) { $url_string_components[] = '#' . $parts['fragment']; } for ($k = 0; $k < count($url_string_components); $k++) { $curr_component = $url_string_components[$k]; if ($k >= $max_depth_if_over_length || strlen($url_short) + strlen($curr_component) > $max_url_length) { if ($k == 0 && strlen($url_short) < $max_url_length) { // Always show a portion of first directory $url_short .= substr($curr_component, 0, $max_url_length - strlen($url_short)); } $url_short .= $ellipsis; break; } $url_short .= $curr_component; } } else { //$urls = parse_url($url_full); $url_encode = $url_full;//$urls['scheme'].$urls['host'].$urls['path'].'?'.urlencode($urls['query']); if(strpos($url_full, 'http') === false) $url_full = 'http://'.$url_full; } return "$url_encode"; } /* * 二维数组转换一维数组 * $data--二维数组 * $key--数组中的某个值 */ static function array_column($data,$key){ $result=array(); foreach($data as $val) { if(is_array($key)) { foreach($key as $keyval) { $res[$keyval]=$val[$keyval]; } $result[]=$res; }else $result[]=$val[$key]; } return $result; } /** * 根据某个key 去除重复值 * @param $arr * @param $key * @return mixed * author Fox */ static function assoc_unique($arr, $key) { $tmp_arr = array(); foreach($arr as $k => $v) { if(in_array($v[$key], $tmp_arr))//搜索$v[$key]是否在$tmp_arr数组中存在,若存在返回true { unset($arr[$k]); } else { $tmp_arr[] = $v[$key]; } } sort($arr); //sort函数对数组进行排序 return $arr; } /** * * @param $message * @param $count * author Fox */ static function Change_message($message,$count){ $message = preg_replace("/&#?[a-z0-9]+;/i", '', $message); if($count){ $message = self::shtmlspecialchars(strip_tags($message)); }else{ $message = self::shtmlspecialchars(strip_tags($message)); } return $message; } /* 类似于 lang::get 的简易模板 */ static function template($str,$replace){ foreach ($replace as $key => $value){ $str = str_replace(':'.$key, $value, $str); } return $str; } /** * 给指定的二维数组添加元素数组的指定元素值为 二维数组的 Key 值 * @param type $arr * @param type $key * @return type */ static function array_add_key($arr, $key) { $new_arr = array(); foreach($arr as $element) { $new_arr[$element[$key]] = $element; } return $new_arr; } static function trimall($str){ $qian=array(" "," ","\t","\n","\r");$hou=array("","","","",""); return str_replace($qian,$hou,$str); } }