<?php
/**
* Global Function
*
* @author Avenger <avenger@php.net>
* @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,'/wwwroot/'.$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 = 'sender@phpe.net' : '' ;
$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 ;
}
}
/**
* UBB解析
*
* @param none
* @access public
* @return void
*/
function ubbParse($txt, $coverhtml=0 ) {
if ($coverhtml == 0) $txt = nl2br(htmlspecialchars($txt)); //BR和HTML转换
//只转换BR,不转换HTML
if ($coverhtml == 1 ) {
if (!preg_match('/^<.+>$/s', $txt) && !preg_match('/<table.+<//table>/is', $txt )) {
$txt = strip_tags($txt );
$txt = nl2br($txt );
}
}
// pre and quote
$txt = preg_replace( "#/[quote/](.+?)/[/quote/]#is", "<blockquote>/1</blockquote>", $txt );
$txt = preg_replace( "#/[code/](.+?)/[/code/]#is", "<p class='php'>/1</p>", $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]avenger@php.net[/email] [email=avenger@php.net]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 );
// Images
$txt = preg_replace( "#/[img/](.+?)/[/img/]#i", "<a href='/1' target='_blank'><img alt='Click to fullsize' src='/1' border='0' οnlοad='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 ;
}
?>
/**
* Global Function
*
* @author Avenger <avenger@php.net>
* @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,'/wwwroot/'.$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 = 'sender@phpe.net' : '' ;
$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 ;
}
}
/**
* UBB解析
*
* @param none
* @access public
* @return void
*/
function ubbParse($txt, $coverhtml=0 ) {
if ($coverhtml == 0) $txt = nl2br(htmlspecialchars($txt)); //BR和HTML转换
//只转换BR,不转换HTML
if ($coverhtml == 1 ) {
if (!preg_match('/^<.+>$/s', $txt) && !preg_match('/<table.+<//table>/is', $txt )) {
$txt = strip_tags($txt );
$txt = nl2br($txt );
}
}
// pre and quote
$txt = preg_replace( "#/[quote/](.+?)/[/quote/]#is", "<blockquote>/1</blockquote>", $txt );
$txt = preg_replace( "#/[code/](.+?)/[/code/]#is", "<p class='php'>/1</p>", $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]avenger@php.net[/email] [email=avenger@php.net]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 );
// Images
$txt = preg_replace( "#/[img/](.+?)/[/img/]#i", "<a href='/1' target='_blank'><img alt='Click to fullsize' src='/1' border='0' οnlοad='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 ;
}
?>