我想知道你在这个论坛里使用的 UBB parse 技术

想了解一下在这个论坛里使用的 UBB parse 技术.
因为我自己写过一个,想交流一下

我也写过,wiki里面就用了很多的类似的代码,好像没有什么特别的,用正则表达式就可以了。最好要设置每一种解析器的优先级,不然标签多了的话会乱掉。

我先说一下我的实现吧.

我是用的 jakarta-oro
使用 xml 做配置.配置如下:


<MAP>
<UBB-CODE>\[b\](.+?)\[\/b\]</UBB-CODE>
<MAP-TO><b>$1<\/b></MAP-TO>
</MAP>
<MAP>
<UBB-CODE>\[i\](.+?)\[\/i\]</UBB-CODE>
<MAP-TO><i>$1<\/i></MAP-TO>
</MAP>

有一个解析器:


UBBParser{
String parse(String stringWithUBB);
}

完成带有 UBB code 的 String 转换.
你说的解析优先级问题,这里是按配置文件中出现的顺序做转换,配置在前的,先进行转换.
XML 配置文档是在第一次解析前读取进内存的.

在实际应用中,发现,如果文档存入数据库时也是 UBB 代码格式的,
在显示时再做解析,用户一多,速度就受影响,后来改成发布文章时
解析,也就存入数据库的直接是要显示的数据,效率会高,但是这样一来
就不能提供基于 UBB 的修改功能,不知道各位有没有遇过同样的情况,
有没有参考方案?

jive的UBB是使用filter实现的,基本是decorator模式,可以在源代码中方便找到。