快速业务通道

一个改进的UBB类

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-25
le(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")) 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;//如果是不支持的标记
}

//查找对对应的结束标记
$eregi_ret=eregi("[/".$tag."]",$parse,$eregi_arr);
if(!$eregi_ret){
$ret .= $parse2.''[''.$tag_start.'']'';
continue;//如果没有对应该的结束标记
}
$pos=strpos($parse,$eregi_arr[0]);
$value=substr($parse,0,$pos);//这是起止标记之间的内容
$tag_end=substr($parse,$pos+2,$tag_len);
$parse=substr($parse,$pos+$tag_len+3);//结束标记之后的内容

if(($tag!="url") and ($tag!="email") and ($tag!="img")){
$value=$this->parse($value);
}

$ret .= $parse2;
eval(''$ret .= ''.$this->tags[$tag].''("''.$tag_start.''","''.$tag_end.''","''.$value.''");'');
}
$this->call_time--;
return $ret;
}

function simple($start,$end,$value){
return ''<''.$start.''>''.$value.''</''.$end.''>'';
}

function url($start,$end,$value){
$trim_value=trim($value);
if (strtolower(substr($trim_value,0,7))!="http://")
$trim_value="http://".$trim_value;
if($this->urlcheck->check($trim_value)) return ''<a href="''.$trim_value.''" ''.$this->attr_url.''>''.$value.''</a>'';
else return ''[''.$start.'']''.$value.''[/''.$end.'']'';
}

function email($start,$end,$value){
if(emailcheck($value)) return ''<a href="mailto:''.$value.''">''.$value.''</a>'';
else return ''[''.$start.'']''.$value.''[/''.$end.'']'';
}

function img($start,$end,$value){
$trim_value=trim($value);
if ((strtolower(substr($trim_value,0,7))!="http://") or ($this->urlcheck->check($trim_value)))
return ''<img src="''.$trim_value.''"></img>'';
else return ''[''.$start.'']''.$value.''[/''.$end.'']'';
}
}

//测试
echo ''<html>'';
echo ''<head><title>测试</title></head>'';
echo ''<body>'';
echo ''<form action="''.str2url($PATH_INFO).''" method="post">'';
echo ''<textarea cols="100" rows="10" name="ubb">''.htmlencode4textarea($ubb).''</textarea><br>'';
echo ''<input type="submit" value="转换">'';
echo ''</form>'';

if(isset($ubb)){
$ubbcode =

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号