在哪里可以找到PHP中好的MediaWiki标记解析器?

在哪里可以找到PHP中好的MediaWiki标记解析器?,php,parsing,mediawiki,markup,Php,Parsing,Mediawiki,Markup,我会尝试对MediaWiki的代码进行一点黑客攻击,但我发现如果我能得到一个独立的解析器,那么就没有必要了 有人能帮我吗 谢谢。这实际上是一种非常难解析的格式。您可以尝试将解析器组件从mediawiki中分离出来(因为它也是php),但这是一个混乱的过程。我已经看到了一些部分独立的标记,它们对非常有限的标记子集做了几乎合理的工作 如果您碰巧实现了一个,或者重构了当前的wikipedia,请告诉我它可能非常有用。Ben Hughes是对的。这很难做到正确,尤其是如果你想100%准确地解析来自维基百

我会尝试对MediaWiki的代码进行一点黑客攻击,但我发现如果我能得到一个独立的解析器,那么就没有必要了

有人能帮我吗


谢谢。

这实际上是一种非常难解析的格式。您可以尝试将解析器组件从mediawiki中分离出来(因为它也是php),但这是一个混乱的过程。我已经看到了一些部分独立的标记,它们对非常有限的标记子集做了几乎合理的工作


如果您碰巧实现了一个,或者重构了当前的wikipedia,请告诉我它可能非常有用。

Ben Hughes是对的。这很难做到正确,尤其是如果你想100%准确地解析来自维基百科这样的大维基的真实文章。wikitech邮件列表中经常讨论这个问题,尽管进行了多次尝试,但没有其他解析器能够提供这个问题

首先,它不是真正的解析器,因为它没有抽象语法树(AST)这样的概念。它是一个专门转换为HTML的转换器

其次,不要陷入将wikitext视为一种标记语言的陷阱,这种语言在极少数情况下可以通过HTML进行扩展。您必须将其视为HTML的扩展。向HTML解析器添加wikitext支持要比向wikitext解析器添加HTML支持容易得多

归根结底,如果您想要任何其他格式,则需要将HTML转换为该格式

基本上,只有MediaWiki可以解析wikitext。但是是的,解析器与代码的其余部分紧密集成。有经验的MediaWiki黑客对隔离解析器的问题反应不好-我尝试过(-:

但我还是继续隔离了它。它还不完整,也不准备与任何人共享。但基本上,您希望从未安装或未连接到数据库或web服务器的MediaWiki源代码开始。制作一个包含解析器的PHP存根程序并调用一个入口点。当它无法运行时检查错误,并制作一个虚假的为已访问的类、函数或全局设置一个标记。重复此操作,直到将解析器与MediaWiki的其余部分交互的大部分位置都删除为止

然后,问题在于保持被黑客攻击的存根变体同步,因为源树变化很快,实时wiki非常快地接受解析器中的变化,如果要在将来工作,您的变体必须跟上


查看我的功能请求:

不是完全相同的,但请看这个问题:至少似乎有一些