<?php
/*********************************************************************
* 公用函数列表
* ubb,getip,GoIn,goback,IsInt,InString.....
* OurHome:http://iwind.org
* http://10.13.31.90/~coldwind
* 
* */
/////////////////ubb支持代码函数////////////////////////////
function ubb($Text) { 
  $Text=trim($Text);
  $Text=htmlspecialchars($Text);  
  $Text=ereg_replace("\n","<br>",$Text); 
  $Text=ereg_replace("\r","",$Text);
  $Text=preg_replace("/\\t/is","  ",$Text); 
  $Text=preg_replace("/\[h1\](.+?)\[\/h1\]/is","<h1>\\1</h1>",$Text); 
  $Text=preg_replace("/\[h2\](.+?)\[\/h2\]/is","<h2>\\1</h2>",$Text); 
  $Text=preg_replace("/\[h3\](.+?)\[\/h3\]/is","<h3>\\1</h3>",$Text); 
  $Text=preg_replace("/\[h4\](.+?)\[\/h4\]/is","<h4>\\1</h4>",$Text); 
  $Text=preg_replace("/\[h5\](.+?)\[\/h5\]/is","<h5>\\1</h5>",$Text); 
  $Text=preg_replace("/\[h6\](.+?)\[\/h6\]/is","<h6>\\1</h6>",$Text); 
  $Text=preg_replace("/\[center\](.+?)\[\/center\]/is","<center>\\1</center>",$Text); 
  $Text=preg_replace("/\[url\](http:\/\/.+?)\[\/url\]/is","<a href=\\1>\\1</a>",$Text); 
  $Text=preg_replace("/\[url\](.+?)\[\/url\]/is","<a href=\"http://\\1\">http://\\1</a>",$Text); 
  $Text=preg_replace("/\[url=(http:\/\/.+?)\](.*)\[\/url\]/is","<a href=\\1>\\2</a>",$Text); 
  $Text=preg_replace("/\[url=(.+?)\](.*)\[\/url\]/is","<a href=http://\\1>\\2</a>",$Text); 
  $Text=preg_replace("/\[img\](.+?)\[\/img\]/is","<img src=\\1>",$Text); 
  $Text=preg_replace("/\[color=(.+?)\](.+?)\[\/color\]/is","<font color=\\1>\\2</font>",$Text); 
  $Text=preg_replace("/\[size=(.+?)\](.+?)\[\/size\]/is","<font size=\\1>\\2</font>",$Text); 
  $Text=preg_replace("/\[sup\](.+?)\[\/sup\]/is","<sup>\\1</sup>",$Text); 
  $Text=preg_replace("/\[sub\](.+?)\[\/sub\]/is","<sub>\\1</sub>",$Text); 
  $Text=preg_replace("/\[pre\](.+?)\[\/pre\]/is","<pre>\\1</pre>",$Text); 
  $Text=preg_replace("/\[email\](.+?)\[\/email\]/is","<a href=\\1>\\1</a>",$Text); 
  $Text=preg_replace("/\[i\](.+?)\[\/i\]/is","<i>\\1</i>",$Text); 
  $Text=preg_replace("/\[b\](.+?)\[\/b\]/is","<b>\\1</b>",$Text); 
  $Text=preg_replace("/\[quote\](.+?)\[\/quote\]/is","<blockquote><font size='1' face='Courier New'>quote:</font><hr>\\1<hr></blockquote>", $Text); 
  $Text=preg_replace("/\[code\](.+?)\[\/code\]/is","<blockquote><font size='1' face='Times New Roman'>code:</font><hr color='lightblue'><i>\\1</i><hr color='lightblue'></blockquote>", $Text); 
  $Text=preg_replace("/\[sig\](.+?)\[\/sig\]/is","<div style='text-align: left; color: darkgreen; margin-left: 5%'><br><br>--------------------------<br>\\1<br>--------------------------</div>", $Text); 
  return $Text; 
}

////////////////取得浏览者的ip地址/////////////////////////////
function getip() { 
   $IP=getenv('REMOTE_ADDR'); 
   $IP_ = getenv('HTTP_X_FORWARDED_FOR'); 
   if (($IP_ != "") && ($IP_ != "unknown")) $IP=$IP_; 
   return $IP; 
} 
//+------------------------------JS返回------------------------------
function goback($num,$saying){
echo"<table align=\"center\"><tr><td><a href=\"javascript:history.go(-1)\">$saying</a>";
}
///////////////////判断字符串中是否含有array中的某一值/////////////////
function InString($array,$string){
  while(list(,$value)=each($array)){
   if(eregi($value,$string)){
   return true;
   exit;
  }
  }
}
////////////////////链接到某一页面///////////////////////////////////////
function GoIn($addr,$saying){
echo"<table align=\"center\"><tr><td><a href=\"$addr\">$saying</a></td></tr></table>";
}
////////////////////判断是否为整数//////////////////////////////////////////////
function IsInt($string){
  if(ereg("^[0-9]{0,}$",$string)){
  return true;
  }
   else {
  return false;
  }
}
///////////////////////////以下是判断上传图片类型/////////////////////
function get_img ($file){
$arr=getimagesize($file);
$sina=$arr[2];
  if($sina!=1&&$sina!=2&&$sina!=6)
     {echo"上传图片的类型不允许";
     exit;
     }
switch($sina){
      case"1":$ext="gif";break;
      case"2":$ext="jpg";break;
      case"6":$ext="bmp";break;
}
return $ext;
}
///////////////////////////求一数组和一值的交集///////////////////
function ArrSectString($array,$string){
   $markarr=array($string);
   $newarr=array_intersect($array,$markarr);
   return $newarr;
}
/////////////////////////////剔除html代码并取前length的字符串//////
function GetString($string,$length){
  $string=strip_tags($string);
  if($length>strlen($string)){
     $res=$string;
  }
  else{
     $res=substr($string,"0",$length);
  }
  return $res;
}
/////////////////////////////////得到昨天的日期///////////////////////
function GetYesterday(){
    $time=time(0);
	$Yesterday=date("d",$time-24*3600);
	return $Yesterday;
}
//////////////////////////////////在线人数判定///////////////
//以10分钟为限
function OnLine(){
       global $myfile;
       $time=time(0);
	   $ip=getip();
	   if(!file_exists("data/online.php")){
	     $myfile->writetofile("data/online.php","$ip|$time\n","a+");
	   }
	   else{
	     $array=$myfile->arrayfromfile("data/online.php","\n");
	     //删除超时ip以及相同的ip
		 foreach($array as $key=>$value){
		    list($_ip,$_time)=explode("|",$value);
			if($_time<$time-600||$_ip==$ip){
			   unset($array[$key]);
			}
		 }
		 $array[]="$ip|$time"; 
		 $newip=implode("\n",$array);
		 $myfile->writetofile("data/online.php","$newip\n","w+");
	   }
	   $_arr=$myfile->arrayfromfile("data/online.php","\n");
	   $total_online=sizeof($_arr)-1;
	   return $total_online;
}
//////////////////////////////////分页信息//////////////////////////////////////
//倒序排列,以0为结束
function PageSet($total,$pagesize,$value){
   global $page;
   $pagestart=$total-1-$pagesize*($page-1);
   $pageend=$total-$pagesize*$page;
   for($i=$pagestart;$i<=max($pageend,0);$i++){
       echo"$value";
   }
}
////显示分页/////////////////////
function PageShow($pagenum,$page,$link){
       global $lang22,$lang23;
       if($pagenum=="0"){
         echo" $lang22  <font color=red><b>$pagenum</b></font>/<font color=red>$pagenum</a>";
       }
       else if($pagenum=="1"){
         echo" $lang22  <font color=red><b>$page</b></font>/<font color=red>$pagenum</a>";
       }
    else{
      $next=$page+1;
      $last=$page-1;
      if($page==1){
	      echo"<a href=$link&page=$next> $lang22</a>  <font color=red><b>$page</b></font>/<font color=red>$pagenum</a>";
	  }
	  else if($page==$pagenum){
	     echo"<a href=$link&page=$last> $lang23</a>  <font color=red><b>$page</b></a>/<font color=red>$pagenum</a>";
	  }
	  else{
	     echo"<a href=$link&page=$last> $lang23</a> <a href=$link&page=$next> $lang22</a>  <font color=red><b>$page</b></a>/<font color=red>$pagenum</a>";
	  }
}
}
//+-------------------由sort得到相应的cata--------------
function getcata($sort){
  global $myfile;
  $data=$myfile->readfromfile("data/sort/sort.php");
  $arr1=explode("$sort",$data);
  $arr2=explode("\n",$arr1[0]);
  $last=array_pop($arr2);
  $total=sizeof($arr2);
  list($cata)=explode("|",$last);
  $cata="$cata|$total";
  return $cata;
}
//+-----------------获得跳转分类列表------------------
function getsortlist(){
    require"data/sort/list.php";
    global $catearr,$lang18;
	global $cata_id,$sort_id;
	array_pop($catearr);
	echo"<div align=\"left\">\n";
	echo"<form>\n";
	echo"<select name=\"go\" onChange=\"window.location=form.go.options[form.go.selectedIndex].value\">\n";
	echo'<option value="?action=list"';
	if($sort_id&&empty($cata_id)){
	   echo"seleted";
	}
	echo">$lang18</option>";
	foreach($catearr as $key=>$value){
	    $newarr=explode("|",$value);
		echo"<option value=\"?action=cata&cata=$key&cata_id=$newarr[0]\"";
		if($cata_id==$newarr[0]){
		    echo"selected";
		}
		echo">${sort.$newarr[0]}</option>\n";
		for($i=1;$i<sizeof($newarr);$i++){
		    echo"<option value=\"?action=sort&cata=$key&cata_id=$newarr[0]&sort_id=$newarr[$i]\"";
			if($sort_id==$newarr[$i]){
		    echo"selected";
			}
			echo">|---${sort.$newarr[$i]}</option>\n";
			}
		}
echo"</select>\n";
echo"</form>\n";
echo"</div>";
}
//+-----------------对正则表达式中字符串进行转义------------------
//+-----------------暂定-----------
function RegEncode($string){
  $string=trim($string);
  $string=addslashes($string);
  $string=ereg_replace("(\+|\*|\?|\||\[|\]|\.|\)|\)|\,|\-)","\\\\1",$string);
  return $string;
}
//+------------------进行升数操作---------------------
function UpNum($num){
  global $myfile;
  if(file_exists("../data/num.php")){
     $data=$myfile->readfromfile("../data/num.php");
	 }
	 else{
	 $data="1|100|1|1";
	 }
	 $arr=explode("|",$data);
	 $arr[$num]+=1;
	 $newdata=implode("|",$arr);
	 $myfile->writetofile("../data/num.php",$newdata,"w+");
	 return $arr[$num]-1;
}
//简单的字符串处理函数
function Encode($string){
  $string=trim($string);
  $string=htmlspecialchars($string);
  return $string;
}
//目录可写检查函数
function IsWrite($file_name){
 if(is_writeable($file_name)){
   echo"该文件夹可以写入";
 }
 else{
   echo"<font color=\"red\">$file_name 不能写入</font>";
   exit;
 }
}
//IWFile类
class IWFile{
  var $length;
  var $buffer;
//删除文件
function writetofile($file_name,$data,$method) {
	$fp=@fopen($file_name,$method);
	flock($fp,LOCK_EX);
	$file_data=fwrite($fp,$data);
	fclose($fp);
	return $file_data;
}
//读取文件内容
function readfromfile($file_name,$method="r"){
   $fp=@fopen($file_name,$method);
   $file_data=@fread($fp,filesize($file_name));
   return $file_data;
}
//删除文件中某一条记录
//要求文件内容格式为1|2|3|
//从0条记录开始
function deletefromfile($file_name,$number,$diff="\n"){
   if(!file_exists($file_name)){
   echo"文件不存在";
   exit;
   }
   $array=$this->arrayfromfile($file_name,$diff);
   if($number>sizeof($array)-2){
   echo"你要操作的条目不存在";
   exit;
   }
   unset($array[$number]);
   $newdata=implode($diff,$array);
   $this->writetofile($file_name,$newdata,"w+");
}
//修改某一条目
//要求文件内容格式为1|2|3|
function editfile($file_name,$number,$diff="\n",$newvalue){
  if(!file_exists($file_name)){
    echo"你要操作的文件不存在";
	exit;
  }
  $array=$this->arrayfromfile($file_name,$diff);
  if($number>sizeof($array)-2){
    echo"你要操作的条目不存在";
    exit;
   }
  $array[$number]=$newvalue;
  $newdata=implode($diff,$array);
  $this->writetofile($file_name,$newdata,"w+");
}
//从文件中读取内容,赋于一个数组
//若格式为1|2|3|,则含一空值
function arrayfromfile($file_name,$diff="\n"){
     $data=@$this->readfromfile($file_name);
     $array=explode($diff,$data);
     return $array;
}
//以下部分删除 
}
function msubstr($str,$start,$len) 
{ 
$strlen=$start+$len; 
for($i=0;$i<$strlen;$i++) 
{ 
    if(ord(substr($str,$i,1))>0xa0) 
      { 
       $tmpstr.=substr($str,$i,2); 
       $i++; 
      }   
   else 
    {
     $tmpstr.=substr($str,$i,1); 
    }
} 
return $tmpstr; 
}

function nsubstr($str,$start,$len) 
{ 
  if($len>strlen($str)){
      return $str;
   }
   else{
    $nstr=msubstr($str,$start,"$len-3");
    $nstr="$nstr"."...";
    return $nstr;
  }
}

?>