我常用的common function库
有零填充、截取中文、halt、html跳转、js跳转、过滤html、检查邮箱合法、转换文字中的超链接为可点击连接、返回时间格式等等常用php函数库。br / br /
有零填充、截取中文、halt、html跳转、js跳转、过滤html、检查邮箱合法、转换文字中的超链接为可点击连接、返回时间格式等等常用php函数库。
<?php //因为前后台都要用到,所以放在supermario文件夹下方便重用 /** * 喔~可爱滴小数点~喔~可爱滴千位数~ * 如果位数超过4位,则将第3位前增加, * @param int $gold * @return string */ function showGold($gold) { return number_format($gold); } /** * 页面压缩输出 */ function ob_callback($buffer) { header('Etag: '.md5($buffer)); if( extension_loaded('zlib') AND strstr($_SERVER["HTTP_ACCEPT_ENCODING"],"gzip") ) { $buffer = gzencode($buffer,9); header('Content-Encoding: gzip'); header('Vary: Accept-Encoding'); //header('Via: www.guangxitravel.cn'); header('Content-Length: '.strlen($buffer)); } return $buffer; } /** * 没有提示的情况下跳转页面 * @param string $url * @param string $target */ function go($url='', $target='parent') { if ($url != "") { echo('<script language="javascript">window.location="' . $url . '";</script>'); } else { echo('<script language="javascript">window.location=self.location;"</script>'); } } /** * 清除缓存,ECHO,然后DIE(可恶的javascript+php……纯文本输出,总会有一些空字符……) * @param string $msg */ function justSay($msg) { ob_clean(); die($msg); } /** * 将符合第二个参数的第一个参数里的内容替换为红色 * @param string $data * @param array $keyword * @return string */ function change_keyword($data, $keywords) { if (is_array($keywords)) { foreach ($keywords as $k => $v) { $data = str_replace($v, '<span class="red b">' . $v . '</span>', $data); } return $data; } else { return str_replace($keywords, '<span class="red b">' . $keywords . '</span>', $data); } } /** * 创建完全随机的颜色 * @return string */ function makeColor() { $key = '#'; for ($i = 0; $i < 6; $i++) $key.= rand(0, 9);//生成php随机数 return $key; } /** * 自动加载模型和第三方功能类 * @param string $className */ function autoLoad($className) { if (strstr($_SERVER['REQUEST_URI'], "/operator/") == false) { //服务器不支持SCRIPT_URL if (file_exists(siteRoot . '/client/model/' . $className . '.php')) { require_once siteRoot . '/client/model/' . $className . '.php'; return; } } else { if (file_exists(siteRoot . '/manager/model/' . $className . '.php')) { require_once siteRoot . '/manager/model/' . $className . '.php'; return; } } if (file_exists(siteRoot . '/public/modules/' . $className . '.php')) { require_once siteRoot . '/public/modules/' . $className . '.php'; return; } if (file_exists(siteRoot . '/client/order/model/' . $className . '.php')) { require_once siteRoot . '/client/order/model/' . $className . '.php'; return; } } /** * 用javascript弹出一条信息 * @param <string> $message */ function message($message='') { echo('<script language="javascript">alert("' . $message . '");</script>'); } /** * 模拟strstr()的第三个参数,返回$h中,$n之前的数据 * //$h = haystack, $n = needle * @param <string> $h * @param <string> $n * @return <string> */ function strstrb($h, $n) { return array_shift(explode($n, $h, 2)); } /** * 显示错误信息,并跳转至$pageurl,含有样式 * * @param string $messages * @param string $pageurl * @param int $msc 秒数 */ function msg($messages, $pageurl='javascript:history.back();', $msc=5) { echo '<title>System Message</title> <style type="text/css"> *{margin:0;padding:0px} body{background:#fff;color:#333;font:12px Verdana, Tahoma, sans-serif;text-align:center;margin:0 auto;} a{text-decoration:none;color:#29458C} a:hover{text-decoration:underline;color:#f90} #msg{border:1px solid #c5d7ef;text-align:left;margin:10% auto; width:50%} #msgtitle{padding:5px 10px;background:#f0f6fb;border-bottom:1px #c5d7ef solid} #msgtitle h1{font-size:14px;font-weight:bold;padding-left:10px;border-left:3px solid #acb4be;color:#1f3a87} #msgcontent {padding:20px 50px;} #msgcontent li{display:block;padding:5px;list-style:none;} #msgcontent p{text-align:center;margin-top:10px;padding:0} </style> </head> <body> <div id="msg"> <div id="msgtitle"> <h1>Web System Message</h1> </div> <div id="msgcontent"> ', $messages, ' <p><a href="', $pageurl, '">>>>请点此处返回</a></p> </div> </div> <meta http-equiv="refresh" content="' . $msc . ';URL=', $pageurl, '">'; exit(); } /** * 检查后面的日期是否大于前面的日期 * @param type $datecome 前面的日期 * @param type $datego 后面的日期 * @return type */ function sub_date($datecome, $datego) { $d1 = strtotime($datecome); $d2 = strtotime($datego); $days = round(($d2 - $d1) / 3600 / 24); $days = $days < 1 ? 0 : $days; return $days; } /** * 将$string的$length后边的内容用$dot替换 * @param string $string * @param int $length * @param string $dot * @return string */ function cutstr($string, $length, $dot = '...') { @extract($string); if (strlen($string) <= $length) { return $string; } $string = htmlspecialchars($string); $string = str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string); $strcut = ''; $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); return $strcut . $dot; } /** +---------------------------------------------------------- * 如果 magic_quotes_gpc 为开启状态,则使用此方法使用为特殊符号前增加转移符号 +---------------------------------------------------------- * @access public +---------------------------------------------------------- * @param string $value 可以为数组 +---------------------------------------------------------- * @return string +---------------------------------------------------------- */ function kaddslashes($value) { return $value = is_array($value) ? array_map('kaddslashes', $value) : addslashes($value); } /** +---------------------------------------------------------- * 为特殊符号前去除转移符号 +---------------------------------------------------------- * @access public +---------------------------------------------------------- * @param string $value 可以为数组 +---------------------------------------------------------- * @return string +---------------------------------------------------------- */ function kstripcslashes($value) { return $value = is_array($value) ? array_map('kstripcslashes', $value) : stripcslashes($value); } /** * 将字符串内容html实体化,避免一些非法信息直接执行。如果参数是数组,则递归。 * @param string $value * @return array */ function khtmlspecialchars($value) { return is_array($value) ? array_map('khtmlspecialchars', $value) : preg_replace('/&((#(\d{3,5}|x[a-fA-F0-9]{4})|[a-zA-Z][a-z0-9]{2,5});)/', '&\\1', str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $value)); } /** * 将字符串中的html去除,如果参数是数组,则递归。 * @param string $value * @return array */ function striptags($value) { return $value = is_array($value) ? array_map('striptags', $value) : strip_tags($value); } /** * 检查email的合法性 * * @param string $email * @return bool */ function check_email($email) { if (preg_match("/([a-z0-9]*[-_\.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{2})?/i", $email)) { return true; } else { return false; } } /** * 安全电子邮件地址 * * @param string $email * @param string $title * @param <type> $attributes * @return <type> */ function safe_mailto($email, $title = '', $attributes = '') { if (is_array($email)) { $tmp = $email; unset($email); extract($tmp); } $title = (string) $title; if ($title == "") { $title = $email; } for ($i = 0; $i < 16; $i++) { $x[] = substr('<a href="mailto:', $i, 1); } for ($i = 0; $i < strlen($email); $i++) { $x[] = "|" . ord(substr($email, $i, 1)); } $x[] = '"'; if ($attributes != '') { if (is_array($attributes)) { foreach ($attributes as $key => $val) { $x[] = ' ' . $key . '="'; for ($i = 0; $i < strlen($val); $i++) { $x[] = "|" . ord(substr($val, $i, 1)); } $x[] = '"'; } } else { for ($i = 0; $i < strlen($attributes); $i++) { $x[] = substr($attributes, $i, 1); } } } $x[] = '>'; $temp = array(); for ($i = 0; $i < strlen($title); $i++) { $ordinal = ord($title[$i]); if ($ordinal < 128) { $x[] = "|" . $ordinal; } else { if (count($temp) == 0) { $count = ($ordinal < 224) ? 2 : 3; } $temp[] = $ordinal; if (count($temp) == $count) { $number = ($count == 3) ? (($temp['0'] % 16) * 4096) + (($temp['1'] % 64) * 64) + ($temp['2'] % 64) : (($temp['0'] % 32) * 64) + ($temp['1'] % 64); $x[] = "|" . $number; $count = 1; $temp = array(); } } } $x[] = '<'; $x[] = '/'; $x[] = 'a'; $x[] = '>'; $x = array_reverse($x); ob_start(); ?><script type="text/javascript"> //<![CDATA[ var l=new Array(); <?php $i = 0; foreach ($x as $val) { ?>l[<?php echo $i++; ?>]='<?php echo $val; ?>';<?php } ?> for (var i = l.length-1; i >= 0; i=i-1){ if (l[i].substring(0, 1) == '|') document.write("&#"+unescape(l[i].substring(1))+";"); else document.write(unescape(l[i]));} //]]> </script><?php $buffer = ob_get_contents(); ob_end_clean(); if ($tmp == '' || $tmp == NULL) { return $buffer; } else { echo $buffer; } } /** +---------------------------------------------------------- * 转换文字中的超链接为可点击连接 +---------------------------------------------------------- * @access public +---------------------------------------------------------- * @param string $text 要处理的字符串 +---------------------------------------------------------- * @return string +---------------------------------------------------------- */ function makeLink($string) { $validChars = "a-z0-9\/\-_+=.~!%@?#&;:$\|"; $patterns = array( "/(^|[^]_a-z0-9-=\"'\/])([a-z]+?):\/\/([{$validChars}]+)/ei", "/(^|[^]_a-z0-9-=\"'\/])www\.([a-z0-9\-]+)\.([{$validChars}]+)/ei", "/(^|[^]_a-z0-9-=\"'\/])ftp\.([a-z0-9\-]+)\.([{$validChars}]+)/ei", "/(^|[^]_a-z0-9-=\"'\/:\.])([a-z0-9\-_\.]+?)@([{$validChars}]+)/ei"); $replacements = array( "'\\1<a href=\"\\2://\\3\" title=\"\\2://\\3\" rel=\"external\">\\2://'.Input::truncate( '\\3' ).'</a>'", "'\\1<a href=\"http://www.\\2.\\3\" title=\"www.\\2.\\3\" rel=\"external\">'.Input::truncate( 'www.\\2.\\3' ).'</a>'", "'\\1<a href=\"ftp://ftp.\\2.\\3\" title=\"ftp.\\2.\\3\" rel=\"external\">'.Input::truncate( 'ftp.\\2.\\3' ).'</a>'", "'\\1<a href=\"mailto:\\2@\\3\" title=\"\\2@\\3\">'.Input::truncate( '\\2@\\3' ).'</a>'"); return preg_replace($patterns, $replacements, $string); } /** * 获取客户端浏览器 * @return string */ function browse_info() { $browser = ""; $browserver = ""; $Browsers = array("Lynx", "MOSAIC", "AOL", "Opera", "JAVA", "MacWeb", "WebExplorer", "OmniWeb"); $Agent = $_SERVER["HTTP_USER_AGENT"]; //浏览器的全局变量 for ($i = 0; $i <= 7; $i++) { if (strpos($Agent, $Browsers[$i])) { $browser = $Browsers[$i]; $browserver = ""; } } if (ereg("Mozilla", $Agent) && ereg("MSIE", $Agent)) { $temp = explode("(", $Agent); $Part = $temp[1]; $temp = explode(";", $Part); $Part = $temp[1]; $temp = explode(" ", $Part); $browserver = $temp[2]; //$browserver =preg_replace("/([d.]+)/","1",$browserver); $browserver = "IE" . $browserver; $browser = "IE"; } if (ereg("Mozilla", $Agent) && !ereg("MSIE", $Agent)) { $temp = explode("(", $Agent); $Part = $temp[0]; $temp = explode("/", $Part); $browserver = $temp[1]; $temp = explode(" ", $browserver); $browserver = $temp[0]; $browserver = preg_replace("/([d.]+)/", "1", $browserver); $browserver = " $browserver"; $browser = "Netscape Navigator"; } if (ereg("Mozilla", $Agent) && ereg("Opera", $Agent)) { $temp = explode("(", $Agent); $Part = $temp[1]; $temp = explode(")", $Part); $browserver = $temp[1]; $temp = explode(" ", $browserver); $browserver = $temp[2]; $browserver = preg_replace("/([\d\.]+)/", "1", $browserver); $browserver = " $browserver"; $browser = "Opera"; } //火狐浏览器 if (ereg("Mozilla", $Agent) && ereg("Firefox", $Agent)) { $temp = explode("(", $Agent); $Part = $temp[1]; $temp = explode(")", $Part); $browserver = $temp[1]; $temp = explode(" ", $browserver); $browserver = $temp[2]; $browser = "火狐"; } //谷歌浏览器 if (ereg("Mozilla", $Agent) && ereg("Chrome", $Agent)) { $temp = explode("(", $Agent); $temp = explode(" ", $temp[2]); $browserver = $temp['3']; //如果以后google升级不变位置的话就是它了 $browser = "谷歌"; } //360safe浏览器 if (ereg("Mozilla", $Agent) && ereg("360SE", $Agent)) { //因为360浏览器,没有版本…… $browserver = $browser = "360安全卫士"; } if ($browser != "") { //$browseinfo = $browser.$browserver; $browseinfo = $browserver; } else { $browseinfo = "Unknown"; } return $browseinfo; } /** * 返回时间格式 * @name: prepareDate * @desc: prepares a date in the proper format for specific database types * given a UNIX timestamp * @param: $timestamp: a UNIX timestamp * @param: $fieldType: the type of field to format the date for * (in MySQL, you have DATE, TIME, YEAR, and DATETIME) */ function prepareDate($timestamp, $fieldType = 'DATETIME') { $date = ''; if (!$timestamp === false && $timestamp > 0) { switch ($fieldType) { case 'DATE' : $date = date('Y-m-d', $timestamp); break; case 'TIME' : $date = date('H:i:s', $timestamp); break; case 'YEAR' : $date = date('Y', $timestamp); break; default : $date = date('Y-m-d H:i:s', $timestamp); break; } } return $date; } /** * 适应多维数组的递归,并将其中重复的值去掉后返回 * @param array $array * @return array */ function super_unique($array) { $result = array_map("unserialize", array_unique(array_map("serialize", $array))); foreach ($result as $key => $value) { if (is_array($value)) { $result[$key] = super_unique($value); } } return $result; } /** * 如果数值不满足2位,自动补零 * @param int $num * @return int */ function fullzero($num){ if(strlen($num)!=2){ return '0'.$num; }else{ return $num; } } //返回上一个url function get_visit_url(){ return $_SERVER['HTTP_REFERER']; } ?>
精彩图集
精彩文章