[字号:  ]

如何写个UBB解析

发布时间:2008-11-13 22:25   作者: fei   信息来源: PHPChina 开源社区门户
最近要写个BLOG
决定使用UBB标签
可是没写过
不知道如何写

最新回复

某个人 at 2008-11-13 22:27:30
大致上的原理是你添加在文本上的不是html语言标记。而是你的ubb标记。然后通过正则去匹配他。输出的时候匹配回html标记
liexusong at 2008-11-13 22:36:17
正则表达式!!
fei at 2008-11-13 22:36:54
不用正则不行吗
liexusong at 2008-11-13 22:42:24
可以,不过比较难实现!
yz20sui at 2008-11-13 22:51:22
function ubb($txt) { //UBB 处理函数
        $pattern = array(
        "/\[b\](.+?)\[\/b\]/is",
        "/\[i\](.+?)\[\/i\]/is",
        "/\[u\](.+?)\[\/u\]/is",
        "/\[font=([^\[]*)\](.+?)\[\/font\]/is",
        "/\[color=([#0-9a-z]{1,10})\](.+?)\[\/color\]/is",
        "/\[email=([^\[]*)\](.+?)\[\/email\]/is",
        "/\[email\]([^\[]*)\[\/email\]/is",
        "/\[url=([^\[]*)\](.+?)\[\/url\]/is",
        "/\[url\]www\.([^\[]*)\[\/url\]/is",
        "/\[url\]([^\[]*)\[\/url\]/is",
        "/\[quote\]\s*(.*?)\s*\[\/quote\]/is",
        "/(\[fly\])(.+?)(\[\/fly\])/is",
        "/(\[move\])(.+?)(\[\/move\])/is",
        "/(\

)(.+?)(\[\/align\])/is",
        "/(\[shadow=)(\S+?)(\,)(.+?)(\,)(.+?)(\])(.+?)(\[\/shadow\])/is",
        "/(\[glow=)(\S+?)(\,)(.+?)(\])(.+?)(\[\/glow\])/is",
        "/\[code\](.+?)\[\/code\]/is"
        );

        $replacement = array(
        "<b>\\1</b>",
        "<i>\\1</i>",
        "<u>\\1</u>",
        "<font face=\"\\1\">\\2</font>",
        "<font color=\"\\1\">\\2</font>",
        "<a href=\"mailto:\\1\">\\2</a>",
        "<a href=\"mailto:\\1\">\\1</a>",
        "<a href=\"\\1\" target=_blank>\\2</a>",
        "<a href=\"http://www.\\1\" target=_blank>\\1</a>",
        "<a href=\"\\1\" target=_blank>\\1</a>",
        "<B>引用</B><hr color=#990000 size=1><blockquote>\\1</blockquote><hr color=#990000 size=1>",
        "<marquee width=90% behavior=alternate scrollamount=3>\\2</marquee>",
        "<MARQUEE scrollamount=3>\\2</MARQUEE>",
        "<DIV Align=\\2>\\4</DIV>",
        "<table width=* style=\"filter:shadow(color=\\2, direction=\\4 ,strength=\\6)\">\\8</table>",
        "<table width=* style=\"filter:glow(color=\\2, strength=\\4)\">\\6</table>",
        "<blockquote><font face='Times New Roman'>CODE:</font><hr color=#990000><font face='Courier New'>\\1</font><hr color=#990000></blockquote>",
        );

        $txt=preg_replace($pattern,$replacement,$txt);
        return $txt;
}


非原创... 可以参考一下

银子 at 2008-11-13 23:00:36
自己写的一个.最基本的UBB转换

fei at 2008-11-26 19:24:47
piaomiao163 at 2008-11-26 20:48:48
youreyes at 2008-11-27 13:47:34
pear中有
肯定比你写的不会差