有零填充、截取中文、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……純文字輸出,總會有一些Null 字元……)
- * @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";
- }
- //Firefox瀏覽器
- 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 = "Firefox";
- }
- //Google瀏覽器
- if (ereg("Mozilla", $Agent) && ereg("Chrome", $Agent)) {
- $temp = explode("(", $Agent);
- $temp = explode(" ", $temp[2]);
- $browserver = $temp['3']; //如果以後google升級不變位置的話就是它了
- $browser = "Google";
- }
- //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'];
- }
- ?>
複製代碼 |