在扩展中使用 $wgAjaxExportList
是否可以获取正确的 wiki 解析器?
到目前为止,我已经尝试过以下内容:
global $wgParser;
$parserOpts = \ParserOptions::newFromContext(\RequestContext::getMain());
$wgParser->startExternalParse(null,$parserOpts,OT_HTML);
$html = $wgParser->internalParse($code);
$html = $wgParser->replaceLinkHolders($html);
$html = $wgParser->replaceTransparentTags($html);
$html = \Sanitizer::normalizeCharReferences($html);
return $html;
但是,这不能正常工作。
现在我知道有一个用于解析wikicode的javascript api:http://www.mediawiki.org/wiki/API:Parsing_wikitext
但我不想使用这个,因为这意味着我将不得不执行多个 ajax 请求。
是否有更好的方法从扩展程序中的 ajax 请求在服务器端解析 wiki 文本?
最佳答案
不要自己调用所有这些内部函数,您应该只使用 $wgParser->parse()
并传入 ParserOptions。
此外(无关地),您应该编写一个 API 模块,$wgAjaxExportList
是一个已弃用的接口(interface)。
关于php - 有什么方法可以在 MediaWiki 的 ajax Hook 中获取正确初始化的 wiki 解析器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20114343/