在扩展程序中使用$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文本?
答案 0 :(得分:2)
不要自己调用所有这些内部函数,只需使用$wgParser->parse()
并传入ParserOptions。
另外(并且无关),您应该编写API模块,$wgAjaxExportList
是不推荐使用的界面。