Upsuper's BBCode Parser Test
这个解析器的设计目的是希望构建一个开源的高效率、强容错、具有很好扩展性的使用 PHP 编写的 BBCode 泛用解析器。由于制作和测试时间不长,故疏忽错误难免,如有发现请及时告诉我。如果您对这个程序有什么好的建议、想法,或者您觉得这个还有很大改进的余地,请与我联系,请您指教。谢谢
关于解析器的具体说明请看下面部分
| 测试代码 | ||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||
该解析器目前支持如下标签:b(加粗)、i(斜体)、color(颜色)、size(字号)、font(字体)、align(对齐方式)、url(网址链接)、email(电子邮件)、img(图片)以及表格及其系列标签(table、tr、td、th)
其中大多设计为兼容 Discuz! code 的解析模式,以便对比。由于设计方式不相同,以及出于对 xhtml 标准的完美兼容和对未来泛用性的考虑,其余在 Discuz! code 中出现的标签暂不予支持。在用于对比的 Discuz! code parser 中也删减了这些部分。
另外,已有标签中也有部分使用方法与 Discuz! code 稍有出入,且由于容错方式不同,可能进行的解析不一样。如果输出显示结果不相同,请不要以此对比效率。
已有的与 Discuz! code 不同的改进包括:
- img 可用单参数(用于等比例调整图片大小)
- 各个长度可以支持 CSS 支持的所有单位(em、ex、px、mm、cm、pt、pc、in)以及百分比
- 增加 th 表头标签
- td 和 th 标签可以使用4个参数(第四个为背景色)
除此之外,支持代码相同,但解析结果不同的还有:
- 由于多种原因,size 标签的用法与 Discuz! code 的不完全相同
- 由于 XHTML 标准不推荐(Strict 不允许)使用 <u> 标签,因此 u 标签转换的结果会比 Discuz! code 的结果长
- 由于认为不需要,取消了 Discuz! code 中繁杂的网址纠错
其他部分基本与 Discuz! code 相容。
目前已知问题是,对表格和 size 标签的解析速度较慢(约慢 5%-20%),待进一步优化。同时 size 标签不能将纯数字转换带单位,这不符合 CSS 标准。
这个解析器的源代码暂时不公开(alpha 中),用于对比的精简版 Discuz! code parser 代码可以在这里查看:discuzcode.txt
测试中的最后时间对比的平均值为去掉一个最高值和去掉一个最低值后的结果。