有人告诉我,用 PHP 编写依赖于正则表达式和 preg 函数的 wiki 标记解析器是个坏主意。但我不知道为什么。
那么用 PHP 编写 wiki 标记解析器的最佳方法是什么?这比其他任何东西都更像是一个学术“项目”,所以重点是我自己写。
预先感谢您的帮助。
最佳答案
有人告诉你,至少可以说,“维基语言”定义不当。
真正糟糕的部分是“试图解析”它们,而不是“使用 php 和正则表达式”。
事实上,我相信它们实际上是用正则表达式处理的 (直接进入 html,没有从中间抽象语法树表示传递) 在像 mediawiki强>。没有正则表达式的 AFAIK 实际解析在 PHP 中效率很低。 (除非您使用特定的已编译 PHP 模块进行解析)
请注意,这些软件还具有许多可按需激活的语法功能,但事实证明这些功能可能难以高效编写。
只是真正的麻烦?你必须使用大量转义符来解析像 [
和 ]
这样的字符,当你在 preg_match()
中使用许多反斜杠时很容易混淆> 和 php。除此之外,一个简单的 preg_match_all('#\\[\\[(.*?)\\]\\]#',$data,$matches,PREG_SET_ORDER);
应该让你起来和运行。
(除非我被太多级别的反斜杠弄糊涂了,也就是说) :)
关于PHP 维基标记解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7019842/