我会尝试对 MediaWiki 的代码进行一些修改,但我发现如果我可以获得一个独立的解析器就没有必要了。
谁能帮我解决这个问题?
谢谢。
最佳答案
本·休斯是对的。很难做到正确,尤其是如果您想以 100% 的准确度解析来自像维基百科这样的大型维基百科的真实文章。它在 wikitech 邮件列表中经常被讨论,尽管进行了多次尝试,但没有替代解析器提出这个问题。
首先,它不是真正的解析器,因为它没有 AST(抽象语法树)这样的概念。它是一个专门转换为 HTML 的转换器。
其次,不要陷入将 wikitext 视为可以在极少数情况下使用 HTML 进行扩展的标记语言的陷阱。您必须将其视为 HTML 的扩展。将 wikitext 支持添加到 HTML 解析器比将 HTML 支持添加到 wikitext 解析器要容易得多。
归根结底,如果您需要任何其他格式,则需要将 HTML 转换为该格式。
基本上,只有 MediaWiki 可以解析 wiki 文本。但是是的,解析器与其余代码紧密集成。经验丰富的 MediaWiki 黑客对有关隔离解析器的问题 react 不佳 - 我试过了 (-:
但我还是继续前进并隔离了它。它尚未完成或准备好与任何人分享。但基本上你想从没有安装或连接到数据库或网络服务器的 MediaWiki 源开始。制作一个包含解析器并调用入口点的 PHP stub 程序。运行失败时检查错误,并为访问的类、函数或全局创建一个假 stub 。重复,直到您将解析器与 MediaWiki 的其余部分交互的大部分位置都 stub 。
接下来的问题是保持你被黑的 stub 变体同步,因为源代码树变化很快,实时维基很快接受解析器的变化,如果你的变体要在未来工作,就必须跟上。
查看我的功能请求:Bug 25984 - Isolate parser from database dependencies
关于php - 我在哪里可以找到一个好的 MediaWiki 标记解析器在 PHP 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1029012/