MediaWiki扩展正则替换功能失效求助(InternalParseBeforeLinks钩子)
MediaWiki扩展EnhanceMarkup正则替换功能失效求助
我的MediaWiki扩展EnhanceMarkup中,通过InternalParseBeforeLinks钩子实现的正则替换功能未生效。按预期,输入[* texts]应生成对应脚注、输入hello[br]world应实现换行,但实际内容均原样输出。
以下是扩展的配置文件及钩子处理代码:
extension.json
{ "name": "EnhanceMarkup", "description": "Provides enhanced markup functionalities", "version": "1.0", "author": [ "Jeong Gaon" ], "url": "https://www.gaon.xyz/mw_extensions", "type": "other", "license-name": "Apache-2.0", "AutoloadClasses": { "EnhanceMarkupHooks": "includes/EnhanceMarkupHooks.php" }, "ResourceModules": { "ext.EnhanceMarkup.styles": { "styles": "resources/ext.EnhanceMarkup.styles.css", "localBasePath": "", "remoteExtPath": "EnhanceMarkup" }, "ext.EnhanceMarkup.scripts": { "scripts": ["resources/ext.EnhanceMarkup.scripts.js", "resources/lib/math.js"], "localBasePath": "", "remoteExtPath": "EnhanceMarkup" } }, "Hooks": { "InternalParseBeforeLinks": "EnhanceMarkupHooks::onInternalParseBeforeLinks", "ParserFirstCallInit": "EnhanceMarkupHooks::onParserFirstCallInit", "BeforePageDisplay": "EnhanceMarkupHooks::onBeforePageDisplay" }, "manifest_version": 2 }
includes/EnhanceMarkupHooks.php
<?php class EnhanceMarkupHooks { public static function onBeforePageDisplay(OutputPage &$out, Skin &$skin) { $out->addModules("ext.EnhanceMarkup.styles"); $out->addModules("ext.EnhanceMarkup.scripts"); return true; } public static function onParserFirstCallInit(Parser $parser) { $parser->setHook("random", [self::class, "randomRender"]); return true; } public static function onInternalParseBeforeLinks(Parser &$parser, &$text) { $text = preg_replace('/^([-]{3,9})$/m', "<hr>", $text); $text = preg_replace_callback( "/\[pagecount\]/", function ($matches) use ($parser) { $dbr = wfGetDB(DB_REPLICA); $count = $dbr->selectRowCount("page"); return $count; }, $text ); $text = preg_replace( "/\[\*\s+([^ ]+)\s+(.*?)\]/", '<ref group="$1">$2</ref>', $text ); $text = preg_replace( "/\[\*\s+([^ ]+)\s*\]/", '<ref group="$1" />', $text ); $text = preg_replace("/\[\*\s+(.*?)\]/", '<ref>$1</ref>', $text); $text = preg_replace("/\[\include\s+(.*?)\]/", '{{$1}}', $text); $text = str_replace("[br]", "<br>", $text); $text = preg_replace_callback('/\{\{\{\+([1-5])\s*(.*?)\s*\}\}\}/s', function($matches) { return '<span style="font-size:'.(1 + $matches[1]).'em;">'.$matches[2].'</span>'; }, $text); $text = preg_replace_callback('/\{\{\{-([1-5])\s*(.*?)\s*\}\}\}/s', function($matches) { return '<span style="font-size:'.(1 - $matches[1]/10).'em;">'.$matches[2].'</span>'; }, $text); return true; } public static function randomRender( $input, array $args, Parser $parser, PPFrame $frame ) { $parser->getOutput()->updateCacheExpiry(0); $parts = explode("|", $input); $range = isset($args["range"]) ? $args["range"] : 2; $randomNumber = mt_rand(1, $range); if ($randomNumber <= $range / 2) { return $parts[0]; } else { return isset($parts[1]) ? $parts[1] : $parts[0]; } } }
我的MediaWiki站点地址为https://www.gaonwiki.com,如需更多信息可随时提供,恳请帮忙排查问题。
内容的提问来源于stack exchange,提问作者Gaon
相关产品推荐
相关产品推荐

