当前版本的KefirBB 0.6不再列为beta版本。 我发现使用自己的标签非常容易配置和扩展KefirBB解析器:
kefir-bb.sourceforge.net
(这是 我到目前为止找到的最好的BBCode解析器)
我还在fyhao.com上找到了以下代码,但是它确实可以防止嵌套标签错误(因此不适合解析用户输入的输入):
public static String bbpre(String text) { String html = text; Map<String,String> bbMap = new HashMap<String , String>(); bbMap.put("(rn|r|n|nr)", "<br/>"); bbMap.put("\[b\](.+?)\[/b\]", "<strong></strong>"); bbMap.put("\[i\](.+?)\[/i\]", "<span style='font-style:italic;'></span>"); bbMap.put("\[u\](.+?)\[/u\]", "<span style='text-decoration:underline;'></span>"); bbMap.put("\[h1\](.+?)\[/h1\]", "<h1></h1>"); bbMap.put("\[h2\](.+?)\[/h2\]", "<h2></h2>"); bbMap.put("\[h3\](.+?)\[/h3\]", "<h3></h3>"); bbMap.put("\[h4\](.+?)\[/h4\]", "<h4></h4>"); bbMap.put("\[h5\](.+?)\[/h5\]", "<h5></h5>"); bbMap.put("\[h6\](.+?)\[/h6\]", "<h6></h6>"); bbMap.put("\[quote\](.+?)\[/quote\]", "<blockquote></blockquote>"); bbMap.put("\[p\](.+?)\[/p\]", "<p></p>"); bbMap.put("\[p=(.+?),(.+?)\](.+?)\[/p\]", "<p style='text-indent:px;line-height:%;'></p>"); bbMap.put("\[center\](.+?)\[/center\]", "<div align='center'>"); bbMap.put("\[align=(.+?)\](.+?)\[/align\]", "<div align=''>"); bbMap.put("\[color=(.+?)\](.+?)\[/color\]", "<span style='color:;'></span>"); bbMap.put("\[size=(.+?)\](.+?)\[/size\]", "<span style='font-size:;'></span>"); bbMap.put("\[img\](.+?)\[/img\]", "<img src='' />"); bbMap.put("\[img=(.+?),(.+?)\](.+?)\[/img\]", "<img width='' height='' src='' />"); bbMap.put("\[email\](.+?)\[/email\]", "<a href='mailto:'></a>"); bbMap.put("\[email=(.+?)\](.+?)\[/email\]", "<a href='mailto:'></a>"); bbMap.put("\[url\](.+?)\[/url\]", "<a href=''></a>"); bbMap.put("\[url=(.+?)\](.+?)\[/url\]", "<a href=''></a>"); bbMap.put("\[youtube\](.+?)\[/youtube\]", "<object width='640' height='380'><param name='movie' value='http://www.youtube.com/v/'></param><embed src='http://www.youtube.com/v/' type='application/x-shockwave-flash' width='640' height='380'></embed></object>"); bbMap.put("\[video\](.+?)\[/video\]", "<video src='' />"); for (Map.Entry entry: bbMap.entrySet()) { html = html.replaceAll(entry.getKey().toString(), entry.getValue().toString()); } return html; }
BTW javaBBpre是开源项目的一部分:JavaBB。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)