<?
//ubbcode类
class ubbcode{
var $call_time=0;
//可处理标签及处理函数对应表
var $tags = array( //小写的标签 => 对应的处理函数
'url' => '$this->url',
'email' => '$this->email',
'img' => '$this->img',
'flash' => '$this->flash',
'sound' => '$this->sound',
'black' => '$this->font_color',
'white' => '$this->font_color',
'red' => '$this->font_color',
'pink' => '$this->font_color',
'blue' => '$this->font_color',
'green' => '$this->font_color',
'olive' => '$this->font_color',
'navy' => '$this->font_color',
'gray'=> '$this->font_color',
'fuchsia' => '$this->font_color',
'yellow' => '$this->font_color',
'silver' => '$this->font_color',
'purple' => '$this->font_color',
'marquee' => '$this->simple',
'b' => '$this->simple',
'i' => '$this->simple',
'u' => '$this->simple',
'tt' => '$this->simple',
's' => '$this->simple',
'strike' => '$this->simple',
'h1' => '$this->simple',
'h2' => '$this->simple',
'h3' => '$this->simple',
'h4' => '$this->simple',
'h5' => '$this->simple',
'h6' => '$this->simple',
'sup' => '$this->simple',
'sub' => '$this->simple',
'em' => '$this->simple',
'strong' => '$this->simple',
'code' => '$this->simple',
'samp' => '$this->simple',
'kbd' => '$this->simple',
'var' => '$this->simple',
'dfn' => '$this->simple',
'cite' => '$this->simple',
'small' => '$this->simple',
'big' => '$this->simple',
'blink' => '$this->simple'
);
//url裢接属性
var $attr_url;
//url合法性检查对象
var $urlcheck;
function ubbcode($attr_url){
$this->attr_url = ''.$attr_url;
$this->urlcheck = new urlcheck();
}
//对$str进行UBB编码解析
function parse($str){
$this->call_time++;
$parse = ''.htmlencode($str);
$ret = '';
while(true){
$eregi_ret=eregi("\[[#]{0,1}[[:alnum:]]{1,7}\]",$parse,$eregi_arr); //查找[xx]
if(!$eregi_ret){
$ret .= $parse;
break; //如果没有,返回
}
$pos = @strpos($parse,$eregi_arr[0]);
$tag_len=strlen($eregi_arr[0])-2;//标记长度
$tag_start=substr($eregi_arr[0],1,$tag_len);
$tag=strtolower($tag_start);
if((($tag=="url") or ($tag=="email") or ($tag=="img") or ($tag=="flash")) and ($this->call_time>1)){
echo $this->call_time."<br>";
return $parse;//如果不能是不能嵌套的标记,直接返回
}
$parse2 = substr($parse,0,$pos);//标记之前
$parse = substr($parse,$pos+$tag_len+2);//标记之后
if(!isset($this->tags[$tag])){
echo "$tag_start<br>";
$ret .= $parse2.'['.$tag_start.']';
continue;//如果是不支持的标记
}
&nbs