一个改进的UBB类

青春微笑29

青春微笑29

2016-01-29 14:48

一个改进的UBB类,一个改进的UBB类
  <?php
/*
如有转载,请注明作者

原作者: 何志强
改进: SonyMusic[ sonymusic@163.net ]
文件: ubb.php
备注: 说是改进,其实核心函数parse()已经完全重写了,而且思路也是不一样的。
不过仍是受何志强的例子的启发,而且测试的例子还有URLCHECK等几个函数也是沿用的何志强的程序,谢谢何志强。
目前还没有颜色的功能,但我会加入的。
如果在程序上有什么BUG或不便的地方,请给我MAIL。
谢谢!
改进功能:
对字符串进行UBB编码,该类目前只支持下列几个简单且实用的编码:
1. URL裢接
[url] http://phpuser.com/ [/url]
http://头可以不需要
如[url]phpuser.com[/url]也是可以的。
2. Email裢接
[email] sonymusic@163.net [/email]
3. 图片裢接
[img] http://www.phpchina.com/images/logo.gif [/img]
同URL链接一样,前面的http也可以不要。
4. 文字方面
[b]粗体字[/b]
[i]斜体字[/i]
[u]加下划线[/u]
[h1]1号标题字[/h1] ... [h6]6号标题字[/h6]
[sup][/sup]
[sub][/sub]
[tt][/tt]
[s][/s]
[strike][/strike]
[em][/em]
[strong][/strong]
[code][/code]
[samp][/samp]
[kbd][/kbd]
[var][/var]
[dfn][/dfn]
[cite][/cite]
[small][/small]
[big][/big]
[blink][/blink]
注意以下几点:
1. url,email,img等标签是不分大小写的.
2. 在标签中不允许有TAB键出现,但空格允许。
3. 该类要调用htmlencode,htmlencode4textarea,emailcheck函数和urlcheck类.
4. 修改后支持嵌套,但url,email,img这三个标签不是允许嵌套的。
技术资料:
Ultimate Bulletin Board
http://www.ultimatebb.com/  
What is UBB Code
http://www.scriptkeeper.com/ubb/ubbcode.html  
*/

include("urlcheck.php");
include("otherfunc.php"); //这两个文件的内容,附在最后。

//ubbcode类
class ubbcode{
var $call_time=0;
//可处理标签及处理函数对应表
var $tags = array( //小写的标签 = 对应的处理函数
'url' = '$this-url',
'email' = '$this-email',
'img' = '$this-img',
'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")) and ($this-call_time1)){
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;//如果是不支持的标记
}

//查找对对应的
展开更多 50%)
分享

猜你喜欢

一个改进的UBB类

PHP
一个改进的UBB类

一个用PHP实现的UBB类!

PHP
一个用PHP实现的UBB类!

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

很不错的一个UBB代码

Web开发
很不错的一个UBB代码

一个Ajax类

Web开发
一个Ajax类

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

一个改进的ASP生成SQL 命令字符串的类

ASP
一个改进的ASP生成SQL 命令字符串的类

一个新版本的ubb转化程序

ASP
一个新版本的ubb转化程序

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

PHP与javascript的两种交互方式

PHP与javascript的两种交互方式

Mysql教程:介绍TIMESTAMP时间戳的使用

Mysql教程:介绍TIMESTAMP时间戳的使用
下拉加载更多内容 ↓