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

02-10-17 iceant

想了解一下在这个论坛里使用的 UBB parse 技术.

因为我自己写过一个,想交流一下

浆糊
2002-10-17 15:59

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

iceant
2002-10-17 16:38

我先说一下我的实现吧.

我是用的 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>
<p>

有一个解析器:

UBBParser{
  String parse(String stringWithUBB);
}
<p>

完成带有 UBB code 的 String 转换.

你说的解析优先级问题,这里是按配置文件中出现的顺序做转换,配置在前的,先进行转换.

XML 配置文档是在第一次解析前读取进内存的.

在实际应用中,发现,如果文档存入数据库时也是 UBB 代码格式的,

在显示时再做解析,用户一多,速度就受影响,后来改成发布文章时

解析,也就存入数据库的直接是要显示的数据,效率会高,但是这样一来

就不能提供基于 UBB 的修改功能,不知道各位有没有遇过同样的情况,

有没有参考方案?

banq
2002-10-17 21:16

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