有零填充、截取中文、halt、html跳转、js跳转、过滤html、检查邮箱合法、转换文字中的超链接为可点击连接、返回时间格式等等常用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('');
- } else {
- echo('');
- }
- }
- /**
- * 清除缓存,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, '' . $v . '', $data);
- }
- return $data;
- } else {
- return str_replace($keywords, '' . $keywords . '', $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 $message
- */
- function message($message='') {
- echo('');
- }
- /**
- * 模拟strstr()的第三个参数,返回$h中,$n之前的数据
- * //$h = haystack, $n = needle
- * @param $h
- * @param $n
- * @return
- */
- 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 'System Message
-
-
-
-
-
-
Web System Message -
-
- ', $messages, '
-
>>>请点此处返回 -
-
- ';
- 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 $attributes
- * @return
- */
- 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(' }
- 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();
- ?> $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\\2://'.Input::truncate( '\\3' ).''",
- "'\\1'.Input::truncate( 'www.\\2.\\3' ).''",
- "'\\1'.Input::truncate( 'ftp.\\2.\\3' ).''",
- "'\\1'.Input::truncate( '\\2@\\3' ).''");
- 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'];
- }
- ?>
|