function.inc.php超越php

  <?php

  /**

  * Global Function

  *

  * @author   Avenger <[email protected]>

  * @version 1.14 $Id 2003-05-30 10:10:08 $

  */

  /**

  * 弹出提示框

  *

  * @access public

  * @param string $txt 弹出一个提示框,$txt为要弹出的内容

  * @return void

  */

  function popbox($txt) {

  echo "<script language='JavaScript'>alert('".$txt."')</script>";

  }

  /**

  * 非法操作警告

  *

  * @access public

  * @param string $C_alert   提示的错误信息

  * @param string $I_goback  返回后返回到哪一页,不指定则不返回

  * @return void

  */

  function alert($C_alert,$I_goback='main.php') {

  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 int $len  产生字符串的位数

  * @return string

  */

  function randstr($len=6) {

  $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-@#~'; // characters to build the password from

  mt_srand((double)microtime()*1000000*getmypid()); // seed the random number generater (must be done)

  $password='';

  while(strlen($password)<$len)

  $password.=substr($chars,(mt_rand()%strlen($chars)),1);

  return $password;

  }

  /**

  * 判断下拉菜音的选取项

  *

  * 可以判断字符串一和字符串二是否相等.从而使相等的项目在下拉菜单中被选择

  *

  * @access public

  * @param string $str1  要比较的字符串一

  * @param string $str2  要比较的字符串二

  * @return string       相等返回字符串"selected",否则返回空字符串

  */

  function ckselect($str1,$str2) {

  if($str1==$str2) {

  return ' selected';

  }

  return '';

  }

  /**

  * 一个自定义的Ftp函数

  *

  * @access private

  * @return void

  */

  function myftp($ftp_server,$ftp_port,$ftp_username,$ftp_password,$ftp_path='/') {

  $ftpid=@ftp_connect($ftp_server,$ftp_port) or die('Connect To Ftp Server Error!');

  @ftp_login($ftpid,$ftp_username,$ftp_password) or die('Login Ftp Error!');

  @ftp_chdir($ftpid,'/'.$ftp_path) or die('Chdir Error!');

  return $ftpid;

  }

  /**

  * 截取中文部分字符串

  *

  * 截取指定字符串指定长度的函数,该函数可自动判定中英文,不会出现乱码

  *

  * @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) {$rstr.='...';}

  return $rstr;

  }

  /**

  * 制作链接

  *

  * @access public

  * @param string    url         要链接到的网址

  * @param string    linktext    显示的链接文字

  * @param string    target      目标框架

  * @param string    extras      扩展参数

  * @return string

  */

  function make_link ($url, $linktext=false, $target=false, $extras=false) {

  return sprintf("<a href=\"%s\"%s%s>%s</a>",

  $url,

  ($target ? ' target="'.$target.'"' : ''),

  ($extras ? ' '.$extras : ''),

  ($linktext ? $linktext : $url)

  );

  }

  /**

  * 格式化用户评论

  *

  * @access public

  * @param string

  * @return void

  */

  function clean_note($text) {

  $text = htmlspecialchars(trim($text));

  /* turn urls into links */

  $text = preg_replace("/((mailto|http|ftp|nntp|news):.+?)(>|\s|\)|\"|\.\s|$)/","<a href=\"\1\">\1</a>\3",$text);

  /* this 'fixing' code will go away eventually. */

  $fixes = array('<br>', '<p>', '</p>');

  reset($fixes);

  while (list(,$f) = each($fixes)) {

  $text = str_replace(htmlspecialchars($f), $f, $text);

  $text = str_replace(htmlspecialchars(strtoupper($f)), $f, $text);

  }

  /* <p> tags make things look awfully weird (breaks things out of the <code>

  tag). Just convert them to <br>'s

  */

  $text = str_replace (array ('<P>', '<p>'), '<br>', $text);

  /* Remove </p> tags to prevent it from showing up in the note */

  $text = str_replace (array ('</P>', '</p>'), '', $text);

  /* preserve linebreaks */

  $text = str_replace("\n", "<br>", $text);

  /* this will only break long lines */

  if (function_exists("wordwrap")) {

  $text = wordwrap($text);

  }

  // Preserve spacing of user notes

  $text = str_replace("  ", "  ", $text);

  return $text;

  }

  /**

  * 获取图象信息的函数

  *

  * 一个全面获取图象信息的函数

  *

  * @access public

  * @param string $img 图片路径

  * @return array

  */

  function getimageinfo($img) {

  $img_info = getimagesize($img);

  switch ($img_info[2]) {

  case 1:

  $imgtype = "GIF";

  break;

  case 2:

  $imgtype = "JPG";

  break;

  case 3:

  $imgtype = "PNG";

  break;

  }

  $img_size = ceil(filesize($img)/1000)."k";

  $new_img_info = array (

  "width"=>$img_info[0],

  "height"=>$img_info[1],

  "type"=>$imgtype,

  "size"=>$img_size

  );

  return $new_img_info;

  }

  /**

  * 计算当前时间

  *

  * 以微秒为单位返回当前系统的时间

  *

  * @access public

  * @return real

  */

  function getmicrotime() {

  $tmp = explode(' ', microtime());

  return (real)$tmp[1]. substr($tmp[0], 1);

  }

  /**

  * 写文件操作

  *

  * @access public

  * @param bool

  * @return void

  */

  function wfile($file,$content,$mode='w') {

  $oldmask = umask(0);

  $fp = fopen($file, $mode);

  if (!$fp) return false;

  fwrite($fp,$content);

  fclose($fp);

  umask($oldmask);

  return true;

  }

  /**

  * 加载模板文件

  *

  * @access public

  * @return void

  */

  function tpl_load($tplfile,$path='./templates/',$empty='remove') {

  global $tpl;

  $path ? '' : $path='./templates/';

  require_once 'HTML/Template/PHPLIB.php';

  $tpl = new Template_PHPLIB($path,$empty);

  $tpl->setFile('main',$tplfile);

  }

  /**

  * 模板解析输出

  *

  * @access public

  * @return void

  */

  function tpl_output() {

  global $tpl;

  $tpl->parse('output','main');

  $tpl->p('output');

  }

  /**

  * 邮件发送函数

  *

  * @access public private

  * @param bool

  * @return void

  */

  function mailSender($from, $to, $title, $content) {

  $from ? $from = '[email protected]' : '';

  $title ? $title = 'From Exceed PHP...' : '';

  $sig = "

  感谢您使用我们的服务.\n\n

  Exceed PHP(超越PHP)\n

  $maildate\n\n

  ---------------------------------------------------------------------------------------

  \n\n

  去发现极限方法的唯一办法就是去超越它\n

  超越PHP欢迎您(http://www.phpe.net)\n

  ";

  $content .= $sig;

  if (@mail($to, $title, $content, "From:$from\nReply-To:$from")) {

  return true;

  } else {

  return false;

  }

  }

  function br2none($str) {

  return str_replace(array('<br>', '<br />'), "", $str);

  }

  /**

  * UBB解析

  *

  * @param      none

  * @access     public

  * @return     void

  */

  function ubbParse($txt, $coverhtml=0) {

  if ($coverhtml == 0) $txt = nl2br(new_htmlspecialchars($txt));  //BR和HTML转换

  //只转换BR,不转换HTML

  if ($coverhtml == 1) {

  if (!preg_match('/<\s*(p|br)\s*>/is', $txt) && !preg_match('/<table.+<\/table>/is', $txt)) {

  $txt = strip_tags($txt);

  $txt = nl2br($txt);

  } else {

  $txt = str_replace('<?', '<?', $txt);

  }

  }

  // pre and quote

  //error_reporting(E_ALL);

  $txt = preg_replace( "#\[quote\](.+?)\[/quote\]#is", "<blockquote>\1</blockquote>", $txt );

  $txt = preg_replace( "#\[code\](.+?)\[/code\]#ise", "'<pre class=php>'.br2none('').'</pre>'", $txt );

  // Colors 支持篏套

  while( preg_match( "#\[color=([^\]]+)\](.+?)\[/color\]#is", $txt ) ) {

  $txt = preg_replace( "#\[color=([^\]]+)\](.+?)\[/color\]#is", "<span style='color:\1'>\2</span>", $txt );

  }

  // Align

  $txt = preg_replace( "#\[center\](.+?)\[/center\]#is", "<center>\1</center>", $txt );

  $txt = preg_replace( "#\[left\](.+?)\[/left\]#is", "<div align=left>\1</div>", $txt );

  $txt = preg_replace( "#\[right\](.+?)\[/right\]#is", "<div align=right>\1</div>", $txt );

  // Sub & sup

  $txt = preg_replace( "#\[sup\](.+?)\[/sup\]#is", "<sup>\1</sup>", $txt );

  $txt = preg_replace( "#\[sub\](.+?)\[/sub\]#is", "<sub>\1</sub>", $txt );

  // email tags

  // [email][email protected][/email]   [[email protected]]Email me[/email]

  $txt = preg_replace( "#\[email\](\S+?)\[/email\]#i"                                                                , "<a href='mailto:\1'>\1</a>", $txt );

  $txt = preg_replace( "#\[email\s*=\s*\"\;([\.\w\-]+\@[\.\w\-]+\.[\.\w\-]+)\s*\"\;\s*\](.*?)\[\/email\]#i"  , "<a href='mailto:\1'>\2</a>", $txt );

  $txt = preg_replace( "#\[email\s*=\s*([\.\w\-]+\@[\.\w\-]+\.[\w\-]+)\s*\](.*?)\[\/email\]#i"                       , "<a href='mailto:\1'>\2</a>", $txt );

  // url tags

  // [url]http://www.phpe.net[/url]   [url=http://www.phpe.net]Exceed PHP![/url]

  $txt = preg_replace( "#\[url\](\S+?)\[/url\]#i"                                       , "<a href='\1' target='_blank'>\1</a>", $txt );

  $txt = preg_replace( "#\[url\s*=\s*\"\;\s*(\S+?)\s*\"\;\s*\](.*?)\[\/url\]#i" , "<a href='\1' target='_blank'>\2</a>", $txt );

  $txt = preg_replace( "#\[url\s*=\s*(\S+?)\s*\](.*?)\[\/url\]#i"                       , "<a href='\1' target='_blank'>\2</a>", $txt );

  // Start off with the easy stuff

  $txt = preg_replace( "#\[b\](.+?)\[/b\]#is", "<b>\1</b>", $txt );

  $txt = preg_replace( "#\[i\](.+?)\[/i\]#is", "<i>\1</i>", $txt );

  $txt = preg_replace( "#\[u\](.+?)\[/u\]#is", "<u>\1</u>", $txt );

  $txt = preg_replace( "#\[s\](.+?)\[/s\]#is", "<s>\1</s>", $txt );

  // Header text

  $txt = preg_replace( "#\[h([1-6])\](.+?)\[/h[1-6]\]#is", "<h\1>\2</h\1>", $txt );

  // Images

  $txt = preg_replace( "#\[img\](.+?)\[/img\]#i", "<a href='\1' target='_blank'><img alt='Click to fullsize' src='\1' border='0' onload='javascript:if(this.width>500) this.width=500' align='center' hspace='10' vspace='10'></a><br />", $txt );

  // Attach

  $txt = preg_replace( "#\[attach\s*=\s*\"\;\s*(\S+?)\s*\"\;\s*\](.*?)\[\/attach\]#i" , "<a href='\2' target='_blank'><b>相关附件:</b>\1</a>", $txt );

  $txt = preg_replace( "#\[attach\s*=\s*(\S+?)\s*\](.*?)\[\/attach\]#i"                       , "<a href='\2' target='_blank'><b>相关附件:</b>\1</a>", $txt );

  // Iframe

  $txt = preg_replace( "#\[iframe\](.+?)\[/iframe\]#i", "<div align='center'><iframe src='\1' style='width:96%;height:400px'></iframe><br clear='all'><a href='\1' target='_blank'>在新窗口打开链接</a></div>", $txt );

  // (c) (r) and (tm)

  $txt = preg_replace( "#\(c\)#i"     , "©" , $txt );

  $txt = preg_replace( "#\(tm\)#i"    , "™" , $txt );

  $txt = preg_replace( "#\(r\)#i"     , "®"  , $txt );

  return $txt;

  }

  //重新格式化日期

  function format_date($date) {

  if (!preg_match('/^\d+$/', $date)) $date = strtotime(trim($date));

  $sec = time() - $date;

  //Sec 1 day is 86400

  if ($sec < 86400) {

  return round($sec/3600). ' hours ago';

  } elseif ($sec < (86400 * 7)) {

  return round($sec/86400). ' days ago';

  } elseif ($sec < (86400 * 7 * 4)) {

  return round($sec/(86400*7)). ' weeks ago';

  } else {

  return date('Y-m-d', $date);

  }

  }

  ?>