我写了一个最有效的树顶语法文件。对于像我这样的标签,[b]
我想将它们传递到一个函数中,该函数具有为该论坛配置的 BBCodes 的哈希值。如果允许粗体,它将返回 HTML,否则它将忽略 BB 代码。
rule tag
tag:('[' [a-zA-Z]+ ']')
inner_tag:(
!('[/' [a-zA-Z]+ ']')
(tag <ForumBB::TagNode> / .)
)+
'[/' [a-zA-Z]+ ']'
end
这不适用于嵌套标签。例如,[b][i]Bold and italics[/i][/b]
将无法正确处理,因为它们与 . 的第一个结束标记匹配[/i]
。
我怎样才能做到这一点,当它找到一个标签时,它会在负头中寻找结束标签?
我宁愿不必为每种 BBCode 写出所有规则,因为这是一个动态系统,论坛管理员可以在其中打开/关闭某些标签。