Tag: sablecc

parsingbbcode的最佳方法

我想在一个php网站的bbcodefilter上工作。 (我使用cakephp,这将是一个bbcode帮手)我有一些要求。 Bbcodes可以嵌套。 所以像这样的东西是有效的。 [block] [block] [/block] [block] [block] [/block] [/block] [/block] Bbcodes可以有0个或更多的参数。 例: [video: url="url", width="500", height="500"]Title[/video] Bbcodes可能有多重行为。 比方说, [url]text[/url]将被转换为[url:url="text"]text[/url]或者videobbcode将能够在youtube,dailymotion之间进行select…. 我认为它涵盖了我的大部分需求。 我alreay正则expression式做了一些事情。 但我最大的问题是匹配参数。 事实上,我得到了嵌套的bbcode工作和bbcode 0参数。 但是,当我添加了正则expression式匹配的参数,它不正确匹配嵌套的bbcode。 "\[($tag)(=.*)\"\](.*)\[\/\1\]" //不是。*但是没有gready匹配器 我现在还没有完整的正则expression式,但是我看起来像这样(上图)。 那么有没有办法有效地匹配bbcode与正则expression式或其他东西。 我唯一能想到的就是使用访问者模式,并用这种方式分割我的文本和每个可能的标签,我可以有更多的控制我的文本parsing,我可以validation我的文档,所以如果input文本doesn没有有效的bbcode。 我可以在保存任何东西之前通知用户有错误。 我会使用sablecc来创build我的文本分析器。 http://sablecc.org/ 更好的主意? 或任何可能导致高效灵活的bbcode分析器的东西? 谢谢你,抱歉我的英文不好