生成时间
function maketime($date)
{
if($date){
list($year,$month,$day) = explode("-",$date);
return mktime(0,0,0,$month,$day,$year);
}
return "";
}
生成目录:
function Directory($dir){ // force directory structure
return is_dir($dir) or (Directory(dirname($dir)) and mkdir($dir, 0777));
}
后退
function history_back($go="")
{
if($go){
echo "<script language=\"javascript\">history.go(".$go."); </script>":
}
else{
echo "<script language=\"javascript\">history.go(-1);</script>":
}
}
消息提示
function message($C_alert,$I_goback='') {
if(!empty($I_goback)) {
echo "<script>alert('$C_alert');window.location.href='$I_goback';</script>";
} else {
echo "<script>alert('$C_alert');</script>";
}
}
/**
* 截取中文部分字符串
*
* 截取指定字符串指定长度的函数,该函数可自动判定中英文,不会出现乱码
*
* @access public
* @param string $str 要处理的字符串
* @param int $strlen 要截取的长度默认为10
* @param string $other 是否要加上省略号,默认会加上
* @return string
*/
function showtitle($str,$strlen=10,$other=true) {
$j = 0;
for($i=0;$i<$strlen;$i++)
if(ord(substr($str,$i,1))>0xa0) $j++;
if($j%2!=0) $strlen++;
$rstr=substr($str,0,$strlen);
if (strlen($str)>$strlen && $other)
return $rstr;
}
////////////
function dhtmlspecialchars($string) {
if(is_array($string)) {
foreach($string as $key => $val) {
$string[$key] = dhtmlspecialchars($val);
}
} else {
$string = str_replace('&', '&', $string);
$string = str_replace('"', '"', $string);
$string = str_replace('<', '<', $string);
$string = str_replace('>', '>', $string);
$string = preg_replace('/&(#\d;)/', '&\1', $string);
}
return $string;
}
/////////
function daddslashes($string, $force = 0) {
if(!$GLOBALS['magic_quotes_gpc'] || $force) {
if(is_array($string)) {
foreach($string as $key => $val) {
$string[$key] = daddslashes($val, $force);
}
} else {
$string = addslashes($string);
}
}
return $string;
}
/////////.
function random($length) {
$hash = '';
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';
$max = strlen($chars) - 1;
mt_srand((double)microtime() * 1000000);
for($i = 0; $i < $length; $i++) {
$hash .= $chars[mt_rand(0, $max)];
}
return $hash;
}
//////
function wordscut($string, $length ,$sss=0) {
if(strlen($string) > $length) {
if($sss){
$length=$length - 3;
$addstr=' ...';
}
for($i = 0; $i < $length; $i++) {
if(ord($string[$i]) > 127) {
$wordscut .= $string[$i].$string[$i + 1];
$i++;
} else {
$wordscut .= $string[$i];
}
}
return $wordscut.$addstr;
}
return $string;
}
/////////
百分比
function percent($a,$b,$float="")
{
if($b){
return (round($a/$b,$float+2)*100)."%";
}
return "";
}
/*
获取当前目录下的所有文件的个数
*/
function countDirFiles($dir="")
{
$files = 0;
if(!$dir){
$dir=".";
}
if(is_dir($dir)){
if($handle = opendir($dir)) {
while(false !== ($file = readdir($handle))) {
if(is_file($file)) {
$files++;
}
}
closedir($handle);
}
}
return $files;
}
echo countDirFiles();
/*
获取当前目录下的所有文件
*/
function listFiles($dir="")
{
$files = array();
if(!$dir){
$dir=".";
}
if(is_dir($dir)){
if($handle = opendir($dir)) {
while(false !== ($file = readdir($handle))) {
if(is_file($file)) {
$files[]=$file;
}
}
closedir($handle);
}
}
return $files;
}
print_r(listFiles(get_dir().'www/'));
/*
获取当前目录相对于根目录的相对路径
*/
function get_dir()
{
$biasNum = substr_count($_SERVER['REQUEST_URI'], '/'); //用'/'分割当前路径字符串,并计算分割后的字符串数量
$relativePath = '../'; //初始化变量$relativePath为'./'
for ($i = 0; $i < ($biasNum - 1); $i ++) { //循环添加'../'
$relativePath .= '../';
}
return $relativePath;
}
// 返回GD函数版本号
function gd_version() {
if (function_exists('gd_info')) {
$GDArray = gd_info();
$gd_version_number = $GDArray['GD Version'] ? $GDArray['GD Version'] : 0;
unset($GDArray);
} else {
$gd_version_number = 0;
}
return $gd_version_number;
}
全角半角之间的切换
function f2a($Str) {
$Queue = Array('0' => '0', '1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9',
'A' => 'A', 'B' => 'B', 'C' => 'C', 'D' => 'D', 'E' => 'E', 'F' => 'F', 'G' => 'G', 'H' => 'H', 'I' => 'I', 'J' => 'J',
'K' => 'K', 'L' => 'L', 'M' => 'M', 'N' => 'N', 'O' => 'O', 'P' => 'P', 'Q' => 'Q', 'R' => 'R', 'S' => 'S', 'T' => 'T',
'U' => 'U', 'V' => 'V', 'W' => 'W', 'X' => 'X', 'Y' => 'Y', 'Z' => 'Z', 'a' => 'a', 'b' => 'b', 'c' => 'c', 'd' => 'd',
'e' => 'e', 'f' => 'f', 'g' => 'g', 'h' => 'h', 'i' => 'i', 'j' => 'j', 'k' => 'k', 'l' => 'l', 'm' => 'm', 'n' => 'n',
'o' => 'o', 'p' => 'p', 'q' => 'q', 'r' => 'r', 's' => 's', 't' => 't', 'u' => 'u', 'v' => 'v', 'w' => 'w', 'x' => 'x',
'y' => 'y', 'z' => 'z');
return preg_replace("/([\xA3][\xB0-\xB9\xC1-\xDA\xE1-\xFA])/e", "\$Queue[\\1]", $Str);
}
返回GD函数版本号(三)
//获得IP地址
if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
$onlineip = getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
$onlineip = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
$onlineip = getenv('REMOTE_ADDR');
} elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
$onlineip = $_SERVER['REMOTE_ADDR'];
}
$onlineip = addslashes($onlineip);
@preg_match("/[\d\.]{7,15}/", $onlineip, $onlineipmatches);
$onlineip = $onlineipmatches[0] ? $onlineipmatches[0] : 'unknown';
unset($onlineipmatches);
返回内存占用(二)
if (function_exists('memory_get_usage')) {
$server['memory_info'] = get_real_size(memory_get_usage());
} [/code]自定义函数 get_real_size 结合上面函数返回当前主机内存占用情况[code]function get_real_size($size) {
$kb = 1024; // Kilobyte
$mb = 1024 * $kb; // Megabyte
$gb = 1024 * $mb; // Gigabyte
$tb = 1024 * $gb; // Terabyte
if($size < $kb) {
return $size.' Byte';
}else if($size < $mb) {
return round($size/$kb,2).' KB';
}else if($size < $gb) {
return round($size/$mb,2).' MB';
}else if($size < $tb) {
return round($size/$gb,2).' GB';
}else {
return round($size/$tb,2).' TB';
}
//带汉字字符串截取
function substrgb($in,$num){
$pos=0;
$out="";
while($c=substr($in,$pos,1)){
if($c=="\n") break;
if(ord($c)>128){
$out.=$c;
$pos++;
$c=substr($in,$pos,1);
$out.=$c;
}else{
$out.=$c;
}
$pos++;
if($pos>=$num) break;
}
if($out!=$in) $out = $out . "..";
return $out;
}
生成缓存文件
对于程序的一些设置,如果生成缓存文件可以降低频繁读数据库的压力,
加快程序的执行。下面就是利用两个函数来生成缓存文件。
function settings_recache()
{
global $DB,$db_prefix;
$query=$DB->query("select * from {$db_prefix}settings");
$content="\$options=array(";
while($setting=$DB->fetch_array($query))
{
$content.="\t'".addslashes($setting['title'])."'=>'".addslashes($setting['value'])."',";
}
$content.=');';
writetocache('settings',$content);
}
function writetocache($cachename,$cachedata)
{ if(in_array($cachename,array('archives','categories','hottags','links','newcomments','settings','statistics','stylevars')))
{
$cachedir="../cache/";
$cachefile=$cachedir.'cache_'.$cachename.'.php';
if(!is_dir($cachedir))
{
@mkdir($cachedir, 0777);
}
if($fp = @fopen($cachefile, 'wb'))
{
@fwrite($fp, "<?php//settings cache file//Created on ".date('Y-m-d H:i:s')."if(!defined('SOPHIA_ROOT')) exit('Access Denied');".$cachedata."?>");
@fclose($fp);
@chmod($cachefile, 0777);
}
else
{
echo 'Can not write to '.$cachename.' cache files, please check directory ./cache/ .';
exit;
}
}
}
