<?php //php嗣脯杅郪睿勤砓腔蛌遙 function object_to_array($arr) { if (is_object($arr)) { $arr = get_object_vars($arr); } if (is_array($arr)) { return array_map(__FUNCTION__, $arr); } else { return $arr; } } function array_to_object($arr) { if (is_array($arr)) { return (object) array_map(__FUNCTION__, $arr); } else { return $arr; } } //菰寥源宒腔勤曹講笢腔杻忷趼睫輛俴蛌砱 function addslashes_deep($value) { if (empty($value)) { return $value; } else { return is_array($value) ? array_map(‘addslashes_deep‘, $value) : addslashes($value); } } /** * 殿隙蚕勤砓扽俶郪傖腔壽薊杅郪 */ function get_object_vars_deep($obj) { if (is_object($obj)){ $obj = get_object_vars($obj); } if (is_array($obj)) { foreach ($obj as $key => $value) { $obj[$key] = get_object_vars_deep($value); } } return $obj; } /*斐膘砉涴欴腔脤戙: "IN(‘a‘,‘b‘)"; * * @param mix $item_list 蹈桶杅郪麼趼睫揹,?彆峈趼睫揹奀,趼睫揹硐諉忳杅趼揹 * @param string $field_name 趼僇靡備 */ function db_create_in($item_list, $field_name = ‘‘) { if (empty($item_list)) { return $field_name . " IN (‘‘) "; } else { if (!is_array($item_list)) { $item_list = explode(‘,‘, $item_list); foreach ($item_list as $k => $v) { $item_list[$k] = intval($v); } } $item_list = array_unique($item_list); $item_list_tmp = ‘‘; foreach ($item_list as $item) { if ($item !== ‘‘) { $item_list_tmp .= $item_list_tmp ? ",‘$item‘" : "‘$item‘"; } } if (empty($item_list_tmp)) { return $field_name . " IN (‘‘) "; } else { return $field_name . ‘ IN (‘ . $item_list_tmp . ‘) ‘; } } } /** * 蚚CURL懂杸測賸file_get_contentsㄛ價衾假?睿俶夔蕉藉ㄛ壽敕allow_url_fopen * @param $durl */ function curl_file_get_contents($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_TIMEOUT, 5); curl_setopt($ch, CURLOPT_USERAGENT, _USERAGENT_); curl_setopt($ch, CURLOPT_REFERER, _REFERER_); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $r = curl_exec($ch); curl_close($ch); return $r; } /** * 刉壺恅璃標 * @param $dir 恅璃標繚噤 */ function rm_dir($dir) { if (is_file($dir)) { //岆恅璃ㄛ眻諉刉壺 chmod($dir, 0777); @unlink($dir); return true; } elseif (is_dir($dir)) { if ($path = opendir($dir)) { //紨跺刉壺恅璃麼恅璃標 while ($file = readdir($path)) { if (($file == ‘.‘) || ($file == ‘..‘)) { continue; } //菰寥刉壺赽恅璃標 chmod($dir . ‘/‘ . $file, 0777); rm_dir($dir . ‘/‘ . $file); } closedir($path); chmod($dir, 0777); rmdir($dir); //刉壺恅璃標 return true; } } return false; } /** * 蕭探恅璃標 * @param $from 恅璃標繚噤麼恅璃 * @param $to_dir 恅璃標繚噤 */ function copy_dir($from, $to_dir) { if (!ecm_mkdir($to_dir)) { //醴梓祥岆恅璃標 return false; } if (is_file($from)) { @copy($from, $to_dir); return true; } elseif (is_dir($from)) { if ($path = opendir($from)) { //紨跺葩秶恅璃麼恅璃標 while ($file = readdir($path)) { if (($file == ‘.‘) || ($file == ‘..‘)) { continue; } if (is_dir($from . ‘/‘ . $file)) { //菰寥葩秶恅璃標 copy_dir($from . ‘/‘ . $file, $to_dir . ‘/‘ . $file); } elseif (is_file($from . ‘/‘ . $file)) { //葩秶恅璃 copy($from . ‘/‘ . $file, $to_dir . ‘/‘ . $file); } } closedir($path); return true; } } return false; } /** * 斐膘醴翹ㄗ?彆蜆醴翹腔奻撰醴翹祥湔婓ㄛ頗珂斐膘奻撰醴翹ㄘ * 甡懇衾 ROOT_PATH 都講ㄛブ硐夔斐膘 ROOT_PATH 醴翹狟腔醴翹 * 醴翹煦路睫斛剕岆 / 祥夔岆 * * @param string $absolute_path 橈勤繚噤 * @param int $mode 醴翹?癹 * @return bool */ function ecm_mkdir($absolute_path, $mode = 0777) { if (is_dir($absolute_path)) { return true; } $root_path = ROOT_PATH; $relative_path = str_replace($root_path, ‘‘, $absolute_path); $each_path = explode(‘/‘, $relative_path); $cur_path = $root_path; // 絞ゴ悜遠揭燴腔繚噤 foreach ($each_path as $path) { if ($path) { $cur_path = $cur_path . ‘/‘ . $path; if (!is_dir($cur_path)) { if (@mkdir($cur_path, $mode)) { fclose(fopen($cur_path . ‘/index.htm‘, ‘w‘));//汜傖忑珜 } else { return false; } } } } return true; } /* * Make a error message by JSON format utf-8 * * @param string $msg */ function json_error($msg = ‘‘, $retval = null, $jqremote = false) { //登录 if ($msg == ‘login_please‘) { echo ‘<script language="javascript"> window.top.history.go(0);</script>‘; return; } $result = array( ‘done‘ => false, ‘msg‘ => $msg ); if (isset($retval)) { $result[‘retval‘] = $retval; } header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past header("Content-type:text/plain;charset=utf-8", true); $json = json_encode($result); if ($jqremote === false) { $jqremote = isset($_GET[‘jsoncallback‘]) ? trim($_GET[‘jsoncallback‘]) : false; } if ($jqremote) { $json = $jqremote . ‘(‘ . $json . ‘)‘; } echo $json; } /** * Make a successfully message utf-8 * * @param mixed $retval * @param string $msg */ function json_result($retval = ‘‘, $msg = ‘‘, $jqremote = false) { header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past header("Content-type:text/plain;charset=utf-8", true); $json = json_encode(array( ‘done‘ => true, ‘msg‘ => $msg, ‘retval‘ => $retval )); if ($jqremote === false) { $jqremote = isset($_GET[‘jsoncallback‘]) ? trim($_GET[‘jsoncallback‘]) : false; } if ($jqremote) { $json = $jqremote . ‘(‘ . $json . ‘)‘; } echo $json; } /** * 嗣峎杅郪齬唗 * * @author Doujia * @param array $array * @param array $cols * @return array * * e.g. $data = array_msort($data, array(‘sort_order‘=>SORT_ASC, ‘add_time‘=>SORT_DESC)); */ function array_msort($array, $cols) { $colarr = array(); foreach ($cols as $col => $order) { $colarr[$col] = array(); foreach ($array as $k => $row) { $colarr[$col][‘_‘ . $k] = strtolower($row[$col]); } } $eval = ‘array_multisort(‘; foreach ($cols as $col => $order) { $eval .= ‘$colarr[\‘‘ . $col . ‘\‘],‘ . $order . ‘,‘; } $eval = substr($eval, 0, -1) . ‘);‘; eval($eval); $ret = array(); foreach ($colarr as $col => $arr) { foreach ($arr as $k => $v) { $k = substr($k, 1); if (!isset($ret[$k])) $ret[$k] = $array[$k]; $ret[$k][$col] = $array[$k][$col]; } } return $ret; } /** * * strlen function * * @param string $string * @param bool $onlyCharacters 岆瘁硐呾艘善腔趼﹝ * 撼瞰ㄩ※扂淩邟§ㄩ涴岆3跺趼﹝※扂T邟§ㄩ涴岆3跺趼﹝ * 珨曆趕憩岆ㄛ笢荎恅肮欴勤渾 * */ public static function strlen($string, $onlyCharacters = false) { $strlen = 0; $length = strlen($string); $characterLength = 0; while ($strlen < $length) { $stringTMP = substr($string, $strlen, 1); if (ord($stringTMP) >= 224) { $strlen = $strlen + 3; } elseif (ord($stringTMP) >= 192) { $strlen = $strlen + 2; } else { $strlen = $strlen + 1; } $characterLength++; } return $onlyCharacters ? $characterLength : $strlen; } /** * 汜傖呴儂躇鎢ㄗ呴儂8弇ㄛ4弇杅趼ㄛ4弇趼譫ㄘ * * @return string * */ public static function create_password() { $numbers = ‘1234567890‘; $letters = ‘ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz‘; $numbers_create = array(); $letters_create = array(); for ($i = 0; $i < 4; $i++) { $numbers_create[] = $numbers{rand(0, 9)}; $letters_create[] = $letters{rand(0, 25)}; } $arr = array_merge($numbers_create, $letters_create); shuffle($arr); return implode(‘‘, $arr); } /** * * @param type $len * @return type */ public static function generate_code($len = 15) { $chars = ‘0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ‘; for ($i = 0, $count = strlen($chars); $i < $count; $i++) { $arr[$i] = $chars[$i]; } mt_srand((double)microtime() * 1000000); shuffle($arr); $code = substr(implode(‘‘, $arr), 5, $len); return $code; } /** * 鳳?恅璃 mime 濬倰 * * @date 2011-12-21 */ public static function get_mime_type ($filename) { preg_match("|\.([a-z0-9]{2,4})$|i", $filename, $fileSuffix); switch (strtolower($fileSuffix[1])) { case "js": return "application/x-javascript"; case "json": return "application/json"; case "jpg": case "jpeg": case "jpe": return "image/jpeg"; case "png": case "gif": case "bmp": case "tiff": return "image/" . strtolower($fileSuffix[1]); case "css": return "text/css"; case "xml": return "application/xml"; case "doc": case "docx": return "application/msword"; case "xls": case "xlt": case "xlm": case "xld": case "xla": case "xlc": case "xlw": case "xll": return "application/vnd.ms-excel"; case "ppt": case "pps": return "application/vnd.ms-powerpoint"; case "rtf": return "application/rtf"; case "pdf": return "application/pdf"; case "html": case "htm": case "php": return "text/html"; case "txt": return "text/plain"; case "mpeg": case "mpg": case "mpe": return "video/mpeg"; case "mp3": return "audio/mpeg3"; case "wav": return "audio/wav"; case "aiff": case "aif": return "audio/aiff"; case "avi": return "video/msvideo"; case "wmv": return "video/x-ms-wmv"; case "mov": return "video/quicktime"; case "rar": return "application/x-rar-compressed"; case "zip": return "application/zip"; case "tar": return "application/x-tar"; case "swf": return "application/x-shockwave-flash"; default: if (function_exists("mime_content_type")) { $fileSuffix = mime_content_type($filename); } return "unknown/" . trim($fileSuffix[0], "."); } } /** * 諦誧傷淩妗 IP */ public static function real_ip_client () { static $realip = NULL; if ($realip !== NULL) { return $realip; } if (isset($_SERVER)) { if (isset($_SERVER[‘HTTP_X_FORWARDED_FOR‘])) { $arr = explode(‘,‘, $_SERVER[‘HTTP_X_FORWARDED_FOR‘]); /* ?X-Forwarded-For笢菴珨跺準unknown腔衄虴IP趼睫揹 */ foreach ($arr as $ip) { $ip = trim($ip); if ($ip != ‘unknown‘) { $realip = $ip; break; } } } elseif (isset($_SERVER[‘HTTP_CLIENT_IP‘])) { $realip = $_SERVER[‘HTTP_CLIENT_IP‘]; } else { if (isset($_SERVER[‘REMOTE_ADDR‘])) { $realip = $_SERVER[‘REMOTE_ADDR‘]; } else { $realip = ‘0.0.0.0‘; } } } else { if (getenv(‘HTTP_X_FORWARDED_FOR‘)) { $realip = getenv(‘HTTP_X_FORWARDED_FOR‘); } elseif (getenv(‘HTTP_CLIENT_IP‘)) { $realip = getenv(‘HTTP_CLIENT_IP‘); } else { $realip = getenv(‘REMOTE_ADDR‘); } } preg_match("/[\d\.]{7,15}/", $realip, $onlineip); $realip = !empty($onlineip[0]) ? $onlineip[0] : ‘0.0.0.0‘; return $realip; } /** * 鳳?督昢け腔ip * * * @return string * */ function real_ip_server () { static $serverip = NULL; if ($serverip !== NULL) { return $serverip; } if (isset($_SERVER)) { if (isset($_SERVER[‘SERVER_ADDR‘])) { $serverip = $_SERVER[‘SERVER_ADDR‘]; } else { $serverip = ‘0.0.0.0‘; } } else { $serverip = getenv(‘SERVER_ADDR‘); } return $serverip; } public static function is_url($str) { return preg_match("/((http[s]?|ftp):\/\/)?[^\/\.]+?\..+\w$/i", $str); } /** * 旯爺痐 * * @param string $id * @return boolean */ public static function is_idcard($id) { $id = strtoupper($id); $regx = "/(^\d{15}$)|(^\d{17}([0-9]|X)$)/"; $arr_split = array(); if (!preg_match($regx, $id)) { return FALSE; } if (15 == strlen($id)) //潰脤15弇 { $regx = "/^(\d{6})+(\d{2})+(\d{2})+(\d{2})+(\d{3})$/"; @preg_match($regx, $id, $arr_split); //潰脤汜゜゜ヽ岆瘁淏? $dtm_birth = "19" . $arr_split[2] . ‘/‘ . $arr_split[3] . ‘/‘ . $arr_split[4]; if (!strtotime($dtm_birth)) { return FALSE; } else { return TRUE; } } else //潰脤18弇 { $regx = "/^(\d{6})+(\d{4})+(\d{2})+(\d{2})+(\d{3})([0-9]|X)$/"; @preg_match($regx, $id, $arr_split); $dtm_birth = $arr_split[2] . ‘/‘ . $arr_split[3] . ‘/‘ . $arr_split[4]; if (!strtotime($dtm_birth)) //潰脤汜゜゜ヽ岆瘁淏? { return FALSE; } else { //潰桄18弇旯爺痐腔苺桄鎢岆瘁淏?﹝ //苺桄弇偌桽ISO 7064:1983.MOD 11-2腔寞隅汜傖ㄛX褫眕'峈岆杅趼10﹝ $arr_int = array( 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ); $arr_ch = array( ‘1‘, ‘0‘, ‘X‘, ‘9‘, ‘8‘, ‘7‘, ‘6‘, ‘5‘, ‘4‘, ‘3‘, ‘2‘ ); $sign = 0; for ($i = 0; $i < 17; $i++) { $b = (int)$id{$i}; $w = $arr_int[$i]; $sign += $b * $w; } $n = $sign % 11; $val_num = $arr_ch[$n]; if ($val_num != substr($id, 17, 1)) { return FALSE; } else { return TRUE; } } } } /** * 桄痐怀?腔蚘璃華硊岆瘁磁楊 * * @param string $email 剒猁桄痐腔蚘璃華硊 * * @return bool */ public static function is_email($user_email) { $chars = "/^([a-z0-9+_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,5}\$/i"; if (strpos($user_email, ‘@‘) !== false && strpos($user_email, ‘.‘) !== false) { if (preg_match($chars, $user_email)) { return true; } else { return false; } } else { return false; } }
//快速排序 function quick_sort($array){ if (count($array) <= 1) return $array; $key = $array[0]; $left_arr = array(); $right_arr = array(); for ($i=1; $i<count($array); $i++){ if ($array[$i] <= $key) $left_arr[] = $array[$i]; else $right_arr[] = $array[$i]; } $left_arr = quick_sort($left_arr); $right_arr = quick_sort($right_arr); return array_merge($left_arr, array($key), $right_arr); } //冒泡排序法 function bubble_sort($array){ $count = count($array); if ($count <= 0) return false; for($i=0; $i<$count; $i++){ for($j=$count-1; $j>$i; $j--){ if ($array[$j] < $array[$j-1]){ $tmp = $array[$j]; $array[$j] = $array[$j-1]; $array[$j-1] = $tmp; } } } return $array; }
/** * 潰脤岆瘁峈珨跺磁楊腔奀潔跡宒 * * @param string $time * @return void */ public static function is_time($time) { $pattern = ‘/[\d]{4}-[\d]{1,2}-[\d]{1,2}\s[\d]{1,2}:[\d]{1,2}:[\d]{1,2}/‘; return preg_match($pattern, $time); }
/PHP倒计时 //php的时间是以秒算。js的时间以毫秒算 date_default_timezone_set(‘PRC‘); //date_default_timezone_set("Asia/Hong_Kong");//地区 //配置每天的活动时间段 $starttimestr = "08:00:00"; $endtimestr = "22:00:00"; $starttime = strtotime($starttimestr); $endtime = strtotime($endtimestr); $nowtime = time(); if ($nowtime<$starttime){ die("活动还没开始,活动时间是:{$starttimestr}至{$endtimestr}"); } $lefttime = $endtime-$nowtime; //实际剩下的时间(秒) /* <!--<script language="JavaScript"> <!-- // var runtimes = 0; function GetRTime(){ var nMS = <?=$lefttime?>*1000-runtimes*1000; var nH=Math.floor(nMS/(1000*60*60))%24; var nM=Math.floor(nMS/(1000*60)) % 60; var nS=Math.floor(nMS/1000) % 60; document.getElementById("RemainH").innerHTML=nH; document.getElementById("RemainM").innerHTML=nM; document.getElementById("RemainS").innerHTML=nS; if(nMS>5*59*1000&&nMS<=5*60*1000) { alert("还有最后五分钟!"); } runtimes++; setTimeout("GetRTime()",1000); } window.onload=GetRTime; // --> </script> <!--/*<h4><strong id="RemainH">XX</strong>:<strong id="RemainM">XX</strong>:<strong id="RemainS">XX</strong></h4>*/
//判断文件是否存在,远程 function es_file_exists($file){ if(preg_match(‘/^http:\/\//‘,trim($file))){ $file = str_replace(‘ ‘,‘%20‘,$file); $file = trim($file); $parseurl=parse_url($file); if( ! isset($_ENV[‘base_url_flag‘][$parseurl[‘host‘]])){//先判斷一下域名是否能訪問的了 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $parseurl[‘host‘]); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3); $contents = curl_exec($ch); $_ENV[‘base_url_flag‘][$parseurl[‘host‘]] = (!$contents || preg_match("/404/", $contents)) ? false : true; } if($_ENV[‘base_url_flag‘][$parseurl[‘host‘]] === false){ return false; } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $file); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2); $contents = curl_exec($ch); if ($contents){ $statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); if ($statusCode == 200) { return true; } } return false; } return file_exists(trim($file));//本地的 }
class Autoloader { protected static $classPaths = array(); protected static $classFileSuffix = ‘.class.php‘; protected static $cacheFilePath = null; protected static $cachedPaths = null; protected static $excludeFolderNames = ‘/^CVS|\..*$/‘; // CVS directories and directories starting with a dot (.). protected static $hasSaver = false; /** * Sets the paths to search in when looking for a class. * * @param array $paths * @return void **/ public static function setClassPaths($paths) { self::$classPaths = $paths; } /** * Adds a path to search in when looking for a class. * * @param string $path * @return void **/ public static function addClassPath($path) { self::$classPaths[] = $path; } /** * Set the full file path to the cache file to use. * * Example: * * <code> * Autoloader::setCacheFilePath(‘/tmp/class_path_cache.txt‘); * </code> * * @param string $path * @return void **/ public static function setCacheFilePath($path) { self::$cacheFilePath = $path; } /** * Sets the suffix to append to a class name in order to get a file name * to look for * * @param string $suffix - $className . $suffix = filename. * @return void **/ public static function setClassFileSuffix($suffix) { self::$classFileSuffix = $suffix; } /** * When searching the {@link $classPaths} recursively for a matching class * file, folder names matching $regex will not be searched. * * Example: * * <code> * Autoloader::excludeFolderNamesMatchingRegex(‘/^CVS|\..*$/‘); * </code> * * @param string $regex * @return void **/ public static function excludeFolderNamesMatchingRegex($regex) { self::$excludeFolderNames = $regex; } /** * Returns true if the class file was found and included, false if not. * * @return boolean **/ public static function loadClass($className) { $filePath = self::getCachedPath($className); if ($filePath && file_exists($filePath)) { // Cached location is correct include($filePath); return true; } else { // Scan for file foreach (self::$classPaths as $path) { if ($filePath = self::searchForClassFile($className, $path)) { self::$cachedPaths[$className] = $filePath; if (!self::$hasSaver) { register_shutdown_function(array(‘Autoloader‘, ‘saveCachedPaths‘)); self::$hasSaver = true; } include($filePath); return true; } } } return false; } protected static function getCachedPath($className) { self::loadCachedPaths(); if (isset(self::$cachedPaths[$className])) { return self::$cachedPaths[$className]; } else { return false; } } protected static function loadCachedPaths() { if (is_null(self::$cachedPaths)) { if (self::$cacheFilePath && is_file(self::$cacheFilePath)) { self::$cachedPaths = unserialize(file_get_contents(self::$cacheFilePath)); } } } /** * Write cached paths to disk. * * @return void **/ public static function saveCachedPaths() { if (!file_exists(self::$cacheFilePath) || is_writable(self::$cacheFilePath)) { $fileContents = serialize(self::$cachedPaths); $bytes = file_put_contents(self::$cacheFilePath, $fileContents); if ($bytes === false) { trigger_error(‘Autoloader could not write the cache file: ‘ . self::$cacheFilePath, E_USER_ERROR); } } else { trigger_error(‘Autoload cache file not writable: ‘ . self::$cacheFilePath, E_USER_ERROR); } } protected static function searchForClassFile($className, $directory) { if (is_dir($directory) && is_readable($directory)) { $d = dir($directory); while ($f = $d->read()) { $subPath = $directory . $f; if (is_dir($subPath)) { // Found a subdirectory if (!preg_match(self::$excludeFolderNames, $f)) { if ($filePath = self::searchForClassFile($className, $subPath . ‘/‘)) { return $filePath; } } } else { // Found a file if ($f == $className . self::$classFileSuffix) { return $subPath; } } } } return false; } }
原文:http://www.cnblogs.com/timily/p/3899467.html