Tools 是非官方社区Wiki。社区文档正在编写中,欢迎参与。 Wiki编辑答疑群:717421103
版本250722.2
全站通知:

帮助:解析函数

来自WIKI实验室WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索
目录

A B C D E F G I L N O P Q R S T U V W

本页旨在介绍BWIKI支持的解析函数,针对平台特性和中文环境提供简单易懂的说明和用例。

解析函数(Parser function)是一种魔术字(Magic word),它动态地处理数据和逻辑,能根据不同的输入和条件,输出不同内容。如条件判断、数学计算、字符串处理和时间处理等等。 用户能用它自由的实现各种功能,如编写能自动更新的内容、简化复杂结构的实现或设计灵活强大的模板。

BWIKI支持192个解析函数,它们来自Mediawiki和第三方扩展。特殊:版本页面列出了所有扩展及其版本,点击扩展名可以访问扩展主页和文档(部分BWIKI开发/魔改的扩展可能无法找到文档,请参考本页)。特殊:版本页面还列出了软件版本、支持的解析函数和扩展标签等等信息。

基本格式:

{{函数名:参数1|参数2|...|参数n}}

其中:

{{}} 表明这是一个模板或魔术字。
函数名是解析函数的名称,大部分函数以井号开头。
参数1参数2参数n是参数。多个参数由竖线 | 分割。参数也是wikitext,可以包含模板或解析函数等等。Wiki解析器会优先运算、展开参数中的代码(wikitext),这与数学公式中的括号相似,从内到外逐级展开。

注意事项:

  • 参数1必定会自动被展开,传入解析函数的是展开结果。在参数1中使用nowiki标签很可能导致非预期行为。
  • 所有参数都会被trim(移除头尾的空白字符,如空格和换行)后传入解析函数。因此如需传入空白字符需要用nowiki标签包裹参数。比如空格
    <nowiki> </nowiki>
  • 在参数中使用某些字符需要“转义”。如空格就需要
    <nowiki> </nowiki>
    ;竖线|,被用于分隔两个参数,此时需要用“
    {{!}}
    ”。
  • 第三方扩展提供了大量解析函数,它们的细节特性可能不同:
    • 部分函数在缺少参数和提供空白参数时,行为会不一致,比如regex
    • 字符和对应的HTML实体(如&lt;)受到的处理可能不一致。需要注意函数是否解码输入或编码输出。


解析函数目录
A
anchorencode • arraydefine • arraydiff • arrayindex • arrayintersect • arraymap • arraymaptemplate • arraymerge • arrayprint • arrayreset • arraysearch • arraysearcharray • arraysize • arrayslice • arraysort • arrayunion • arrayunique • ask • autoedit
B
C
calendarstartdate • calendarenddate • canonicalurl • canonicalurle • CASCADINGSOURCES • categorytree • concept • contributors • count • cscore • css
D
declare • default_form • DEFAULTSORT • DISPLAYTITLE • dowhile • dpl • dplchapter • dplmatrix • dplnum • dplreplace • dplvar
E
explode • expr
F
filepath • follow • forargs • formatdate • formatnum • forminput • formlink • formredlink • fornumargs • FULLPAGENAME • FULLPAGENAMEE • fullurl • fullurle
G
gender • GRAMMAR
I
if • ifeq • iferror • ifexist • ifexpr • imgh • imgw • info • int • invoke
L
language • lc • lcfirst • len • listfilter • listmap • listmerge • listsort • listunique • localurl • localurle • loop • lst • lsth • lstx • lstapp • lstcnt • lstcntuniq • lstelem • lstfltr • lstfnd • lstind • lstjoin • lstmap • lstmaptemp • lstprep • lstrm • lstsep • lstsrt • lstsub • lstuniq
N
NAMESPACE • NAMESPACEE • NAMESPACENUMBER • ns • nse • NUMBERINGROUP • NUMBEROFACTIVEUSERS • NUMBEROFADMINS • NUMBEROFARTICLES • NUMBEROFEDITS • NUMBEROFFILES • NUMBEROFPAGES • NUMBEROFPAGEVIEWS • NUMBEROFUSERS • NUMBEROFVIEWS
O
P
padleft • padright • PAGEID • PAGENAME • PAGENAMEE • PAGESINCATEGORY • PAGESIZE • plural • pos • PROTECTIONEXPIRY • PROTECTIONLEVEL
R
rel2abs • #replace • revisionday • revisionday2 • revisionid • revisionmonth • revisionmonth1 • revisiontimestamp • revisionuser • revisionyear • rmatch • rootpagename • rootpagenamee • rpos • rreplace • rsplit
S
seo • set • set_recurring_event • show • smwdoc • special • speciale • sub • subjectpagename • subjectpagenamee • subjectspace • subjectspacee • subobject • subpagename • subpagenamee • switch
T
tag • talkpagename • talkpagenamee • talkspace • talkspacee • template_display • template_params • time • timel • titleparts • token • tokenif • trim • trimuesc
U
uc • ucfirst • ueif • ueifeq • uesc • uescnowiki • ueswitch • urldecode • urlencode
V
var • var_final • vardefine • vardefineecho • varexists
W
while • widget

A

anchorencode

将文本编码为HTML 锚点格式。MediaWiki原生支持。

常用于在模板中处理锚点相关参数。在创建链接时,可确保锚点被正确编码,避免因特殊字符导致链接失效。

语法

{{anchorencode:文本}}
返回值为“锚点安全格式”的字符串,适用于 HTML 元素 `id` 属性、Wiki 链接中的章节位置等。

示例

示例 效果
基本

{{anchorencode:1 z á 元}}

1_z_á_元

部分符号被编码

{{anchorencode:& < " { [}}

&amp;_&lt;_&quot;_&#123;_&#91;

编码锚点 [http://mw.org/page#{{anchorencode:URL data}} 这个页面] 这个页面
需要但未编码锚点 [http://mw.org/page#URL data 这个页面] data 这个页面(解析错误)
用于模板 创建锚点<span id="{{anchorencode:{{{1|}}}}}"></span> <span id="URL_data"></span>
使用场景:
  • 链接到页面内部或其他页面的特定章节
  • 模板中处理未知或用户输入的章节名
  • 避免手动编码特殊字符
注:
  • 对一个确定的URL,手动编码锚点当然可行。因此本函数更多地用于模板中,比如处理参数中未知的锚点参数。
  • 与urlencode不同:
    {{anchorencode:a:b/c d}} → a:b/c_d(HTML 锚点编码)
    {{urlencode:a:b/c d}} → a%3Ab%2Fc+d(整个 URL 或查询参数编码)


arraydefine

定义临时的数组变量,以便在同一页面后续使用。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。

此函数根据指定的分隔符,将输入字符串切分成数组元素并存储到变量中,可选地进行去重、排序、直接输出等操作。

输入数据可以是固定文本,也可以来自模板参数、SMW 查询结果等。

基于 Arrays 扩展,可以快速构造表格、列表、图鉴等重复性结构(也可用 Loops 扩展或 Lua 模块实现)。

语法

{{#arraydefine: 数组名 | 数据字符串 | 分隔符 | 选项 }}

参数:

数组名:必填,要定义的变量名(区分大小写)
数据字符串:要拆分的内容,留空则定义空数组
分隔符:默认是逗号 (,),可使用正则。如留空,则不拆分,整个字符串作为一个元素
选项:逗号分隔的键=值对或单独的标志,支持:

定义的数组在当前页面的解析生命周期内有效,可与 #arrayprint 等函数配合。

示例

{{#arraydefine:a|red}} → 定义数组a,只有1个元素:red
{{#arraydefine:b|orange,red ,yellow, yellow}} → 定义数组b,有4个元素(分隔符没有指定,默认为逗号):orange、red、yellow、yellow
{{#arraydefine:c}} → 定义空数组c:
{{#arraydefine:d|apple, pear; orange|/\s*[;,]\s*/}} → 定义数组d,分隔符是正则表达式。d有3个元素:apple、pear、orange
{{#arraydefine:e|orange,red ,yellow, yellow|,|unique,sort=desc, print=list}} → 去重、降序排列,输出列表:yellow、red、orange
{{#arraydefine:e|orange,red ,yellow, yellow|,|unique,sort=desc, print=pretty}} → 同上,但是输出格式为pretty:yellow、red和orange


arraydiff

计算数组的差集(从第一个数组中移除所有出现在其它数组中的元素),并将结果存入新数组。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。


差集运算常用于过滤数据集,例如去除已处理元素、排除指定值等。

其数学意义可表示为:[math]\displaystyle{ A - B - C }[/math]

即依次从集合 [math]\displaystyle{ A }[/math] 中移除出现在 [math]\displaystyle{ B }[/math][math]\displaystyle{ C }[/math] 中的所有元素。

语法

{{#arraydiff: 结果数组名 | 数组1 | 数组2 | ... | 数组N }}

示例

先定义三个数组:

{{#arraydefine:a|2,1,1,3,blue,apple,apple}}
{{#arraydefine:b|2,2,blue}}
{{#arraydefine:c|3,blue}}


数组内容:

  • 2、1、1、3、blue、apple、apple
  • 2、2、blue
  • 3、blue


差集运算 调用代码 输出结果
[math]\displaystyle{ A - B }[/math]

移除 b 中的元素

{{#arraydiff:x | a | b }}{{#arrayprint:x}} 1、1、3、apple、apple
[math]\displaystyle{ A - C }[/math]

移除 c 中的元素

{{#arraydiff:y | a | c }}{{#arrayprint:y}} 2、1、1、apple、apple
[math]\displaystyle{ A - B - C }[/math]

移除 b 和 c 中的元素

{{#arraydiff:z | a | b | c }}{{#arrayprint:z}} 1、1、apple、apple
[math]\displaystyle{ A - C - B }[/math]

移除 c 和 b 中的元素

{{#arraydiff:w | a | c | b }}{{#arrayprint:w}} 1、1、apple、apple

底层代码和实战用例,请参阅帮助:解析函数/arraydiff


arrayindex

输出一个数组指定位置的值。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。

从已定义的数组中,根据指定序号返回对应的元素值。支持正数和负数索引,负数表示从数组末尾开始倒数。

使用前必须先通过 #arraydefine 定义数组,否则返回默认值或空字符串

语法

{{#arrayindex: 数组名 | 序号 | 默认值 }}

  • 数组名:已定义的数组名称
  • 序号:从 0 开始计数的整数。负数从末尾倒数,如 -1 表示最后一个元素
  • 默认值:当数组名或序号无效时返回的值,默认为空字符串
    数组名无效:不存在该数组。如在定义数组前就使用它的值
    序号无效:找不到对应位置的值。这可能是序号非数字、越界(超过实际数据范围)导致

示例

{{#arrayindex:a |2 }} → 返回a数组的第3个元素
{{#arrayindex:b |-1 }} → 返回b数组的最后一个元素
{{#arrayindex:c |foo |bad value }} → 因序号无效,返回默认值(bad value)

完整示例:

{{#arraydefine:mylist|apple,banana,cherry}}
* {{#arrayindex:mylist|0}} <!-- apple -->
* {{#arrayindex:mylist|-1}} <!-- cherry -->
* {{#arrayindex:mylist|5|not found}} <!-- not found -->
  • apple
  • cherry
  • not found


关于底层代码和实战用例,请参阅帮助:解析函数/arrayindex


arrayintersect

计算多个数组的交集。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。

从“第一个数组”中过滤,仅保留那些在所有后续数组中都至少出现一次的元素;结果的顺序与重复次数完全沿用第一个数组,与其他数组无关。

语法

{{#arrayintersect:新数组名 | 数组1 |数组2 |... |数组n }}

至少需要两个数组参数。函数不直接输出,结果会写入 新数组名,需配合 #arrayprint 按需输出。

数组项比较时,行为基于 PHP 函数array_intersect:按字符串值比较,区分大小写(例如 redRed 不同)。

示例

有数组a: {{#arraydefine:a|orange, orange, red, blue}}
有数组b: {{#arraydefine:b|red, red, red, red, orange, yellow, yellow}}
有数组c: {{#arraydefine:c|blue, red}}


a ∩ b : {{#arrayintersect:x|a|b}}{{#arrayprint:x}}orange、orange、red
b ∩ a :{{#arrayintersect:y|b|a}}{{#arrayprint:y}}red、red、red、red、orange
a ∩ b ∩ c : {{#arrayintersect:z|a|b|c}}{{#arrayprint:z}}red

关于底层代码和实战用例,请参阅帮助:解析函数/arrayintersect


arraymap

将一个字符串按指定分隔符拆分,对每个子串按给定格式输出,并用分隔符或连接词拼接。出自扩展 Page Forms

语法

{{#arraymap: 字符串 | 分隔符 | 占位符 | 输出格式 | 输出分隔符 | 输出连接词 }}

参数说明:

  • 字符串:要处理的原始字符串,通常来自模板参数、SMW 查询或表达式结果。
  • 分隔符(可选):拆分用的符号,默认为英文逗号 ,。留空时逐字符拆分(包括空格与换行)。
  • 占位符:在“输出格式”中用作替换的标记。
  • 输出格式:包含占位符的 wikitext,解析时会将占位符替换为当前子串。
  • 输出分隔符(可选):拼接各结果时使用的分隔符,默认 , (逗号+空格)。
  • 输出连接词(可选):替代最后两个元素之间的分隔符,如“和”“或”。默认与输出分隔符相同。

示例

用法 代码 结果
基本替换 {{#arraymap:a_b_c | _ | @ | '''@''' | + }} a+b+c
自定义格式 {{#arraymap:a_b_c | _ | @ | 有'''@'''的内容 | …… }} a的内容……有b的内容……有c的内容
添加连接词 {{#arraymap:托奇_环理_小满_秘银_从云_辰纱 | _ | @ | [[首页|@]] | , |和 }}一起开会 托奇环理小满秘银从云辰纱一起开会
配合模板 {{#arraymap:apple, banana, cherry | , | @ | {{ucfirst:@}} }} Apple, Banana, Cherry
条件筛选 {{#arraymap: 2, 7, 4, 9, 3 |,|@|{{#ifexpr: @ > 5 | @ }} }} 7, 9

关于底层代码和实战用例,请参阅帮助:解析函数/arraymap


arraymaptemplate

分割字符串,用指定模板逐一输出。出自扩展 Page Forms

具体来说,按分隔符切分字符串,并把每个片段作为参数{{{1}}}传给指定模板,再用“输出分隔符”连接结果。行为类似 #arraymap,但把“格式化逻辑”下放到模板中处理。

当每个元素需要较复杂的渲染(多行结构、带条件判断、包含链接/图标/样式等)时,优先使用本函数,以避免在 #arraymap 中堆叠复杂 wikitext,造成“嵌套地狱”。

语法

{{#arraymaptemplate: 字符串 | 模板名 | 分隔符 | 输出分隔符 }}

参数:

  • 字符串:要拆分的原始文本。
  • 模板名:用于渲染每个片段的模板。片段作为 {{{1}}}(即参数1)传入模板。
  • 分隔符:用来切分字符串(非正则)。留空时改为“逐字符切分”。
  • 输出分隔符(可选):连接各次模板输出的文本,默认为 , (英文逗号+空格)。

示例

比如模板 "ListLine"内容如下:

* {{{1}}}

调用:

{{#arraymaptemplate:托奇、环理、辰纱|ListLine|、|\n}}

效果:

  • 托奇
  • 环理
  • 辰纱

关于底层代码和实战用例,请参阅帮助:解析函数/arraymaptemplate


arraymerge

合并数组。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。

语法

{{#arraymerge: 新数组名 | 数组1 | 数组2 | ... | 数组n }}
  • 新数组名:存放合并结果的目标数组名称
  • 数组1..n:要合并的已定义数组,至少两个

将多个数组按顺序合并为一个新数组,合并时:

  • 元素会按数组顺序依次追加;
  • 不会去重;
  • 数字键会按 PHP 规则重新编号,字符串键保留原名(后者会覆盖前者同名键)。

示例

先定义数组abc:

  • a: {{#arraydefine:a|orange}} 值为 orange
  • b: {{#arraydefine:b|red, red}} 值为 red、red
  • c: {{#arraydefine:c|blue, blue}} 值为 blue、blue

则:

  • {{#arraymerge: x | a | b }} → x = orange、red、red
  • {{#arraymerge: x | a | c }} → x = orange、blue、blue
  • {{#arraymerge: x | a | b | c }} → x = orange、red、red、blue、blue

关于底层代码和实战用例,请参阅帮助:解析函数/arraymerge


arrayprint

按指定格式输出数组内容。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。

支持占位符替换、自定义分隔符、嵌入 Wikitext(如模板、链接等)以及自然语言式列表输出。

语法

{{#arrayprint: 数组名 | 分隔符 | 占位符 | 输出格式 | 选项 }}
  • 数组名: 要输出的数组名称。
  • 分隔符:用于分隔多个数组元素的字符串。默认为(Wiki界面语言的顿号,BWiki为中文)。支持 HTML 标签(如<br/>)。
  • 占位符:在“输出格式”中占位,标记数组元素输出位置。
  • 输出格式:一段 wikitext,定义单个数组元素的输出方式。必须包含占位符。
  • 选项: 额外的输出选项,支持:
    print=pretty,将最后一个分隔符替换为(BWiki默认中文)。

示例

先定义数组:{{#arraydefine:b|red, orange, blue}}

示例 效果
基本 {{#arrayprint:b}} red、orange、blue
无分隔符 {{#arrayprint:b | }} redorangeblue
以换行分隔 {{#arrayprint:b |<br/> }} red
orange
blue
自定义格式(长度统计) {{#arrayprint:b | <br/> | @ | @的长度:{{#len:@}} }} red的长度:3
orange的长度:6
blue的长度:4
自定义格式(模板调用) {{#arrayprint:b | <br/> | @ | {{Color| @ | @ }} }} red
orange
blue

关于底层代码和实战用例,请参阅帮助:解析函数/arrayprint


arrayreset

删除数组。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。

用于删除由Arrays扩展定义的数组。

语法

{{#arrayreset: 数组名1 |数组名2 | ... | 数组名n }}
  • 删除指定数组


{{#arrayreset:}}
  • 删除所有数组

示例

先定义数组a, b, c:

{{#arraydefine:a|orange, red}}
{{#arraydefine:b|111, 22222}}
{{#arraydefine:c}}

他们的Size为:a:2、b:2、c:0和不存在的d:


现在删除a:{{#arrayreset:a}}


再次查看Size:a:、b:2、c :0和不存在的d:

可以看到:

  • 空数组 c 的 size 为 0
  • 被删除 a 与不存在数组 d 的 size 均为空


arraysearch

搜索数组。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。

在数组中查找指定值首次出现的位置,并返回其索引或自定义值。

支持从指定索引开始搜索,以及正则表达式匹配。索引从0开始计数。

语法

{{#arraysearch: 数组名 | 搜索值 | 开始位置 | 成功值 | 失败值 }}
  • 数组名:已定义的数组名称。
  • 搜索值:要查找的元素内容。
    普通字符串会按“完全匹配”查找(前后空白忽略)。
    若以 /pattern/ 格式书写,则按正则表达式匹配。
  • 开始位置:可选,搜索起点的索引(非负整数,默认 0)。超出范围会直接失败。
  • 成功值:可选,找到时返回的值。省略时返回匹配元素的索引(数字)。
  • 失败值:可选,未找到时返回的值。省略时返回空字符串。

示例

定义数组 b{{#arraydefine:b|blue,white,red,white}}

  • 基础用法:{{#arraysearch:b|white}} → 1
  • 开始位置:{{#arraysearch:b|white|2}} → 3
  • 正则匹配:{{#arraysearch:b|/r.*/}} → 2 (匹配 red)
  • 未找到时:{{#arraysearch:b|blu}}
  • 自定义成功/失败值:
    {{#arraysearch:b|white|0|yes|no}} → yes
    {{#arraysearch:b|yellow|0|yes|no}} → no


arraysearcharray

数组筛选。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。

从一个数组中筛选出匹配项并写入新数组

支持正则表达式或“整段等值匹配”。可指定起始位置、最大匹配数;当使用正则时,可按捕获组对结果做格式化替换。

语法

{{#arraysearcharray: 新数组名 | 原数组名 | 搜索条件 | 起始索引 | 限制数量 | 转换规则 }}

参数:

  • 新数组名:筛选结果将写入此数组
  • 原数组名:要被筛选的数组
  • 搜索条件:正则表达式或字符串,默认值/^(\s*)$/(匹配空白项)
  • 起始索引:默认 0。从该位置起开始扫描
  • 限制数量:默认不限制。空值或 -1 表示不限制
  • 转换规则:可选,仅当搜索条件为正则时生效。写入结果前对匹配文本做替换,支持用 $1$2… 引用捕获组(整段匹配可用 $0

示例

定义数组:{{#arraydefine:a|apple, bule1, fly, add1,,,, wiki}},值为:apple、bule1、fly、add1、、、、wiki

说明 代码 结果
筛选以 a 开头的值 {{#arraysearcharray: x | a | /^a.+/ }} apple、add1
以 a 开头,从第 2 项开始 {{#arraysearcharray: x | a | /^a.+/ | 2 }} add1
以 a 开头,仅取 1 个命中 {{#arraysearcharray: x | a | /^a.+/ | 0 | 1 }} apple
匹配以数字结尾的元素 {{#arraysearcharray: x | a | /^.*?(\d+)$/ }} bule1、add1
匹配以数字结尾,重排格式 {{#arraysearcharray: x | a | /^.*?(\d+)$/ | | | '''pre-$0''' }} pre-bule1pre-add1
删除空项(仅保留非空白) {{#arraysearcharray: a | a | /\S+/ }} apple、bule1、fly、add1、wiki


arraysize

返回指定数组的元素数量。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。

空数组返回0。不存在的数组返回空字符串,可配合#if判断数组是否存在。

语法

{{#arraysize: 数组名 }}
  • 数组名:要检查的目标数组名称。

示例

{{#arraysize:a}} → 数组a中的元素个数
{{#if: {{#arraysize:b}} | ''array exists'' | ''array not defined'' }} → 检查一个数组是否存在


arrayslice

数组切片。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。

从指定数组中提取一段连续的元素(切片),存入新数组。

支持正向和反向(负数)索引,可选指定提取长度。

语法

{{#arrayslice: 新数组名 | 数组名 | 起始位置 | 长度 }}

参数:

  • 新数组名:保存切片结果的数组。
  • 数组名:要操作的目标数组。
  • 起始位置:从此位置开始切片,首元素为0。负数为倒数定位(如 -1 指最后一个元素)。
  • 长度(可选):要提取的元素数量,默认为后续全部元素。

若数组名不存在或起始位置无效,则创建空的新数组。

示例

创建数组:{{#arraydefine:x|a,b,c,d,e,f,g}} → a、b、c、d、e、f、g

  • {{#arrayslice: y | x | 0 | 2 }} → a、b
  • {{#arrayslice: y | x | 1 | 3 }} → b、c、d
  • {{#arrayslice: y | x | -3 | 2 }} → e、f
  • {{#arrayslice: y | x | 2 }} → c、d、e、f、g


arraysort

数组排序。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。

可按多种方式排序数组,包括升序、降序、自然排序、随机和反转等。

注意,排序是基于字符串,而不是数值顺序的。

语法

{{#arraysort: 数组名 | 排序方式 }}
  • 排序方式:
    • none 不排序
    • desc 降序
    • asc 升序
    • random 随机
    • reverse 反序
    • natural 自然排序

示例

对于数组:{{#arraydefine:x|-10,-1,0,1,3,2,7,6,5,11}} → -10、-1、0、1、3、2、7、6、5、11

{{#arraysort:x}} → -10、-1、0、1、3、2、7、6、5、11
{{#arraysort:x|reverse}} → 11、5、6、7、2、3、1、0、-1、-10
{{#arraysort:x|random}} → 5、1、11、7、0、-10、3、-1、2、6
{{#arraysort:x|desc}} → 7、6、5、3、2、11、-10、-1、1、0
{{#arraysort:x|asc}} → 0、1、-1、-10、11、2、3、5、6、7
{{#arraysort:x|natural}} → -1、-10、0、1、2、3、5、6、7、11
注意:数组元素类型是字符串。


arrayunion

合并数组并去重。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。

将多个数组的元素合并到新数组中,并删除重复值(仅保留每个值第一次出现的位置;整体顺序按给定数组的先后)。

相关函数:#arraymerge 只合并不去重。

语法

{{#arrayunion: 新数组名 | 数组1 | 数组2 | ... | 数组n }}
  • 新数组名:存放结果的数组名称;若已存在将被覆盖。
  • 数组1-n:待合并的数组名称;不存在的数组将被忽略。

示例

准备数据:

  • x : a、b、c、c
  • y : b、c、d
  • z : 1、2、3

合并数组:

基本合并:{{#arrayunion: r | x | y }} → a、b、c、d
顺序影响:{{#arrayunion: r | y | x | z }} → b、c、d、a、1、2、3
顺序影响:{{#arrayunion: r | x | z | y }} → a、b、c、1、2、3、d


arrayunique

数组去重。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。

修改指定数组,去重、移除空值,不修改元素顺序。

语法

{{#arrayunique:数组名}}
  • 数组名:要去重的数组。若数组不存在,函数无输出。

示例

定义数组:

去重前:1、1、01、red、blue、、、、red

执行:{{#arrayunique:a}}

去重后:1、01、red、blue


ask

查询数据。出自扩展 Semantic MediaWiki SMW功能强大,应用广泛。<br>如需单页内大量调用,请考虑使用模板、模块批量查询,这能提升综合体验、降低资源消耗。<br>另请参阅灰机、Fandom的相关文档,他们详述了对SMW的顾虑和限制。


扩展Semantic Mediawiki(双马尾 SMW)提供了强大的数据存储与查询能力(也可用Lua模块,它对于完整、良格式的数据效率更高)。

数据的一处存储到处使用,能极大提升Wiki维护效率。比如一些频繁更新的游戏,少量编辑者就能维护Wiki的基础数据。

但也需注意,SMW很容易造成性能瓶颈,导致页面渲染缓慢、服务器压力增大,极端情况下可能导致服务器暂时瘫痪。

文档

推荐通读灰机wiki的SMW帮助文档,这是最好的中文SMW文档。
需要注意各平台特性不同,如BWIKI不支持MongoDB、SemanticScribunto等特性,灰机与BWIKI平台的SMW限制细节也有不同。配置细节可能随平台负载调整,需以实际表现为准。


autoedit

创建一个链接,点击自动编辑提交表单。出自扩展 Page Forms


尚未发现使用此解析函数的BWiki。


B

BASEPAGENAME

获取上级页面名(不含命名空间)。MediaWiki原生支持。

在启用子页面特性的命名空间中,将页面标题去掉最后一个“/”及其后续部分,保留余下部分(且不含命名空间)。

语法

  • {{BASEPAGENAME}} 作用于当前页面
  • {{BASEPAGENAME: 页面名}} 指定页面名进行计算

仅对启用子页面特性的命名空间生效(如:主、用户、Project、MediaWiki、模板、帮助、模块)。未启用的命名空间(如:文件、分类、Widget)中,其结果等同于整页名(不视为子页面)。

若标题中不包含“/”,结果为整页名(不含命名空间)。

示例

{{BASEPAGENAME}} → 解析函数
{{BASEPAGENAME:帮助:解析函数/basepagename}}解析函数
{{BASEPAGENAME:模板:大模板/中模板/小模板}}大模板/中模板
{{BASEPAGENAME:分类:超大分类/大分类/中分类}}超大分类/大分类/中分类 (分类空间不支持子页面特性,因此这一页面是独立页面,不被视为“超大分类”的子页面)


BASEPAGENAMEE

获取上级页面名(URL编码),不含命名空间。MediaWiki原生支持。

仅对启用子页面特性的命名空间生效(主、用户、项目、Mediawiki、模板、帮助、模块空间均支持。注意,文件、分类、Widget等空间不支持)。

语法

  • {{BASEPAGENAMEE}} 针对当前页面
  • {{BASEPAGENAMEE: 页面名}} 可指定页面

示例

  • {{BASEPAGENAMEE}} → %E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0
  • {{BASEPAGENAMEE:帮助:解析函数/basepagename}}%E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0
  • {{BASEPAGENAMEE:模板:大模板/中模板/小模板}}%E5%A4%A7%E6%A8%A1%E6%9D%BF/%E4%B8%AD%E6%A8%A1%E6%9D%BF
  • {{BASEPAGENAMEE:分类:超大分类/大分类/中分类}}%E8%B6%85%E5%A4%A7%E5%88%86%E7%B1%BB/%E5%A4%A7%E5%88%86%E7%B1%BB/%E4%B8%AD%E5%88%86%E7%B1%BB (分类空间不支持子页面特性,因此这一页面是独立页面,不被视为“超大分类”的子页面)


bidi

涉及从右到左书写的文字时可使用,正确显示多种书写方向的文本。MediaWiki原生支持。

根据内容自动增加方向性控制字符(从左到右U+202A,从右到左U+202B)。

语法

{{bidi:文本}}

示例

{{bidi:text transform}}‪‪text transform‬‬
{{bidi:كتابة عربية}}‫كتابة عربية‬
{{bidi:كتابة عربيةabc def}}‫كتابة عربيةabc def‬


C

calendarstartdate

日历起始日期。出自扩展 Semantic MediaWiki SMW功能强大,应用广泛。<br>如需单页内大量调用,请考虑使用模板、模块批量查询,这能提升综合体验、降低资源消耗。<br>另请参阅灰机、Fandom的相关文档,他们详述了对SMW的顾虑和限制。

在SMW查询中处理日历格式(calendar format)时使用,用于指定当月日历开始日期。

语法

{{#calendarstartdate:}} -> 2025-08-31
注意其末尾需要冒号。

示例

查询当前月份的活动,以日历格式显示。

{{#ask:
  [[Category:Events]]
  [[Has date::>{{#calendarstartdate:}}]]
  [[Has date::<{{#calendarenddate:}}]]
  |?Has date
  |format=calendar
  |limit=300
}}


calendarenddate

日历届满日期。出自扩展 Semantic MediaWiki SMW功能强大,应用广泛。<br>如需单页内大量调用,请考虑使用模板、模块批量查询,这能提升综合体验、降低资源消耗。<br>另请参阅灰机、Fandom的相关文档,他们详述了对SMW的顾虑和限制。

在SMW查询中处理日历格式(calendar format)时使用,用于指定当月日历结束日期。

语法

{{#calendarenddate:}} -> 2025-10-05

注意

其末尾需要冒号。
日历结束日期不一定是当月最后一天。因为日历格式以周为单位显示。

示例

查询当前月份的活动,以日历格式显示。

{{#ask:
  [[Category:Events]]
  [[Has date::>{{#calendarstartdate:}}]]
  [[Has date::<{{#calendarenddate:}}]]
  |?Has date
  |format=calendar
  |limit=300
}}


canonicalurl

生成页面的完整URL,支持附加参数。MediaWiki原生支持。

此URL为完整绝对路径(包含协议、域名和规范化页面路径),不会验证页面或参数是否有效。

语法

{{canonicalurl: 页面名 | 参数 }}
  • 页面名:目标页面的标题。不存在的页面也可生成URL。
  • 参数:可选,附加到URL的查询字符串(不自动添加`&`,需完整书写,如action=edita=111&b=233)。
    • 多参数需要用`&`连接(如`action=edit&section=new`)。
  • 相关函数是canonicalurle,它会将< > " &等符号编码为HTML实体 → &lt;&gt;&quot;&amp;

示例


canonicalurle

获取页面完整URL,支持附加请求参数。MediaWiki原生支持。

会编码这些HTML实体:<>"&&lt;&gt;&quot;&amp;

语法

{{canonicalurle: 页面名 | 参数 }}
  • 不会校验页面和参数是否存在。
  • 多个参数需要手动处理,如示例所示。
  • 它会编码这些HTML实体:<>"&&lt;&gt;&quot;&amp;

示例


CASCADINGSOURCES

返回特定页面连锁保护的来源页面。

特殊情况:如果保护页面自己嵌入自己,会返回自身。

语法

  • {{CASCADINGSOURCES}}
  • {{CASCADINGSOURCES: 页面名 }} 支持指定页面

示例

本Wiki有几个页面被保护了:

例子:

  • {{CASCADINGSOURCES: 帮助:Cascadingsources }} (没有被保护)
  • {{CASCADINGSOURCES: 保护页面示例 }} (没有被级联保护)
  • {{CASCADINGSOURCES: 保护页面示例2 }} (没有被级联保护)
  • {{CASCADINGSOURCES: 保护页面示例/子页面 }}保护页面示例|保护页面示例2(受到两个页面的连锁保护,页面名由竖线隔开)


categorytree

显示分类树,与分类页面相似。出自扩展 CategoryTree

语法

  • {{#categorytree:分类|参数1|参数2|...|参数n}}
其参数与<categorytree>标签相同,详见文档The Ccategorytree tag
缺少内容。本Wiki由与你一样的用户共同编写,请帮助我们完善内容:开始编辑
  • 参考官方文档和其他文档完善内容
  • 增加实际用例和技巧

示例

{{#categorytree:解析函数}}
无子分类


concept

定义概念。出自扩展 Semantic MediaWiki SMW功能强大,应用广泛。<br>如需单页内大量调用,请考虑使用模板、模块批量查询,这能提升综合体验、降低资源消耗。<br>另请参阅灰机、Fandom的相关文档,他们详述了对SMW的顾虑和限制。

概念(Concept,一个SMW术语),是通过指定条件创建的“动态类别”。可以将概念看作一组预先存储的SMW查询条件,可供SMW查询调用。


当概念修改后,使用此概念的SMW查询也会更新(类似于更新页面属性后,SMW查询结果会更新)。 比如,有16处SMW查询包含对同一概念的筛选(如“好武器”,指攻击≥70的特品武器),就可以为其定义一个概念。当查询条件需要修改时(比如改为攻击≥75),仅需修改概念就可以完成对这16处查询的更新。


概念需要在概念命名空间定义(比如概念:好武器),这与模板、Widget等相似。概念定义后,其页面会像分类页面一样展示符合条件的页面列表。

语法

{{#concept:条件|说明}}

  • 条件:SMW查询条件,可以包含其他概念。
  • 说明:描述概念的文本

示例

文档concept页面示例.png
“概念:好武器”页面内容

比如将攻击≥70的特品武器称为“好武器”。

概念:好武器 页面填入以下内容:

{{#concept: [[类型::武器]][[品级::特品]][[攻击::>70]]
| 特品高攻击武器
}}

基于此,可进行查询:

文档concept查询示例.png

此后,如果对于“好武器”的评判标准改变了,那么只需要修改 概念:好武器 页面,不必逐个寻找、更新SMW查询条件。


contributors

列出指定页面的贡献者。出自扩展 Contributors


每个贡献者用户名都链接到他的用户页面。 对于BWiki,列出的实际上是用户的B站用户ID(bid)。此外,BWiki会在内容页面头部展示贡献者列表,因此 #contributors 的实际价值不高。

这个解析函数没有被标记为高开销,因此有模板使用它来间接判断页面是否存在,这能绕开页面高开销解析函数的数量限制(BWiki目前是100)。不过仍需注意,此解析函数需要进行数据库查询,本质上对服务器的开销并不低。

语法

  • {{#contributors:页面名}}
  • {{#contributors:页面名|filteranon}} 过滤匿名用户,但BWiki不存在匿名编辑。
  • 该扩展的特殊页面也可嵌入,如{{Special:Contributors/页面名}}

示例

{{#contributors:首页}}(39886146)(123855714)(9388102)(141211391)(16083703)(5205017)(509732352)(29136181)(111160720)(3546653302721147)(25679249)

注意,一些小组件会改变用户名的外观


count

统计指定字符串在文本中出现的次数。出自扩展 ParserFunctions 的String functions大规模使用时性能低下,推荐使用Lua模块。请参考扩展置顶警告MediaWiki代码库 r51497中的暴论“parsers in the ugliest, most inefficient programming language known to man: MediaWiki wikitext with ParserFunctions.”、“WARNING: enabling this may have an adverse impact on the sanity of your users.”

对于复杂字符串处理,建议使用Lua模块以获得更高性能和可维护性。

语法

{{#count: 文本 | 目标 }}
  • 文本:要搜索的字符串。
  • 目标:要统计的子字符串。如果留空,则默认为单个空格。

返回值是一个整数,表示目标字符串在文本中的出现次数。

示例

  • {{#count:aa bb cc dd aa cc dd|aa}} → 2
  • {{#count:aa bb cc dd dd}} → 4 (默认统计空格数量)


cscore

获取用户贡献,如贡献分数、编辑数、编辑页面数。出自扩展 Contribution Scores

语法

贡献分数:{{#cscore:用户名|score}}
编辑次数:{{#cscore:用户名|changes}}
编辑页面:{{#cscore:用户名|pages}}
  • 注意,此处的用户名是B站用户的bid。

示例

以Lu(bid 39886146)为例

贡献分数:{{#cscore:39886146|score}} → 906
编辑次数:{{#cscore:39886146|changes}} → 2,841
编辑页面数量:{{#cscore:39886146|pages}} → 816


css

向页面添加CSS。出自扩展 CSS

把CSS放进页面的<head>;而<bstyle>在写入位置插入。

语法

{{#css: CSS代码}}
{{#css: CSS页面名}}

行为与限制

函数返回空字符串,但会在<head>插入一个<link rel="stylesheet">

参数处理过程:

  • 如果是页面标题,加载该CSS页面,URL 参数为action=raw&ctype=text/css&css-extension=1
  • 否则若以/开头,作为服务器路径加载CSS。
  • 其它情况视为内联CSS

加载的 CSS 先经过Sanitizer::checkCss清洗,再Base64为data:text/css加入head。

清洗和安全检测要点:

  • 规范化CSS:解码字符引用与转义、清除注释、去除无效控制字符等。
  • 禁止的关键字/函数(命中任一规则,整段CSS都会被替换为/* insecure input */):
    • url
    • var
    • attr(… url …)
    • filter
    • accelerator
    • expression
    • imageimage-set
    • -o-link-o-link-source-o-replace

要用这些属性,可以使用不带检测的<bstyle>标签。

示例

{{#css: 
.a_css_demo{
  color:red;
} 
}}<span class="a_css_demo">文字</span>

效果:文字

<bstyle>/*<pre>*/
.b_css_demo{
  color:red;
} 
/*</pre>*/</bstyle><span class="b_css_demo">文字</span>

效果:文字

最佳实践

由于 #css 与 bstyle 都不会自动去重。若页面内多次使用的模板重复注入相同样式时,会造成代码冗余,甚至渲染异常,也会对搜索引擎收录不利。

因此推荐用 #var 系列函数(#vardefine / #varexist)实现“同一页面仅加载一次”(当然,被大量页面多次使用的样式应当优先放在Common.css中)。

这需要为每段样式分配一个页内唯一名称,如:CSS:Infobox:base模板导航盒CSS。写法示例:

{{#if:{{#varexists:模板破损的木棒CSS}} | |{{#vardefine:模板破损的木棒CSS|1}} {{#css:
/* css代码 */
}}}}
  • 首次调用:变量未定义 → 定义并插入CSS;之后再次调用将直接跳过。
  • 变量作用域为“页面级”,同一页面的多次经由模板/子模板转入都会生效;跨页面不会共享。

bstyle的等价写法:

{{#if:{{#varexists:模板小龙虾CSS}} || {{#vardefine:模板小龙虾CSS | 1 }}<bstyle>/*<pre>*/
/* css代码 */
/*</pre>*/</bstyle>}}
  • 由于bstyle中的内容会先作为wikitext展开后再作为css插入页面,因此需要用带注释的pre标签包裹,防止缩进和换行被解析器当作wiki语法处理。


D

declare

将指定模板参数的值存储为SMW数据。出自扩展 Semantic MediaWiki SMW功能强大,应用广泛。<br>如需单页内大量调用,请考虑使用模板、模块批量查询,这能提升综合体验、降低资源消耗。<br>另请参阅灰机、Fandom的相关文档,他们详述了对SMW的顾虑和限制。

相当于用#set保存指定模板参数。但#set更灵活,还可指定默认值。

语法

{{#declare: 属性名=参数名
 | 属性名=参数名
 | ...
 | 属性名=参数名
}}

在模板中使用,如果调用模板时给出了declare中指定的参数名,其参数值会被保存到属性名。

等价的写法是:

{{#set: 属性名={{{参数名|}}}
 | 属性名={{{参数名|}}}
 | ...
 | 属性名={{{参数名|}}}
}}

不过#declare无法像#set一样,用{{{1|默认值}}}指定默认值。

示例

假设模板A中有如下declare:

{{#declare: name=1
 | type=类型
 | image=图
}}

调用模板A时,如:{{A|柳木棍|类型=武器|image=balabala.png}}

相当于#set了以下属性:

  • name=柳木棍
  • type=武器
  • image=balabala.png


default_form

指定一个表单,用于编辑页面。出自扩展 Page Forms

语法

{{#default_form:表单名称}}

示例

{{#default_form:角色}} 在页面中指定表单后,Wiki功能菜单中会多出“采用表单编辑”按钮。


DEFAULTSORT

指定页面排序关键字。MediaWiki原生支持。

当页面被索引时,用于在分类和搜索结果中的排序。

设置分类时指定排序关键字可以覆盖它:[[分类:分类名称|排序关键字]]

语法

{{DEFAULTSORT:文本|选项}}
  • 文本:要作为排序依据的字符串。分类与搜索结果会按此值排序。
  • 选项(可选):
    • noreplace:若页面已有默认排序键,则不替换。
    • noerror:禁止在多次设置不同排序键时显示错误提示。

示例

比如在页面史密斯专员中设置其排序位置为Smith

  • 设置默认排序键: {{DEFAULTSORT:Smith}}
  • 使用 noreplace 选项:{{DEFAULTSORT:Smith|noreplace}}
  • 使用 noerror 选项:{{DEFAULTSORT:Smith|noerror}}


DISPLAYTITLE

设置页面显示的标题。MediaWiki原生支持。

允许你在页面中设置自定义的显示标题,而不是默认的页面标题。

比如一些情况下无法用预期的标题创建页面,需要额外的前后缀,或使用ID、英文作为页面名。此时可以通过DISPLAYTITLE使页面显示预期的标题。 此外,页面名有限制,一些符号无法使用。DISPLAYTITLE可用于显示正确的页面名。

语法

{{DISPLAYTITLE:文本|选项}}

  • 文本:你希望在页面上显示的标题内容。
  • 选项:
    • noerror:多次使用时,不显示错误信息。
    • noreplace:如果已经设置过DISPLAYTITLE,不会替换。

示例

  • {{DISPLAYTITLE:自定义标题}} 这将使页面的显示标题为“自定义标题”,而不是实际页面标题。
  • {{DISPLAYTITLE:自定义标题|noerror}} 如果是多次使用,不显示错误信息
  • {{DISPLAYTITLE:新标题|noreplace}} 如果之前已经设置DISPLAYTITLE,不替换它(防止覆盖)


dowhile

循环。只要条件wikitext的结果非空白,就会持续循环。出自扩展 Loops

与#while不同的是,循环体的内容会至少执行一次。

语法

{{#dowhile: 条件 | 代码 }}

  • 条件:表示循环继续执行的条件。只要条件wikitext的结果非空,就会持续循环
  • 代码:表示每次循环要执行的代码块,即每次都会重复解析的wikitext。

示例

以列表的格式输出0-4

{{#vardefine: i | 0 }}{{#dowhile:
 | {{#ifexpr: {{#var: i }} < 5 | true }}
 | <nowiki/>
* {{#var: i }}{{#vardefine: i | {{#expr: {{#var: i }} + 1 }} }}
}}

  • 0
  • 1
  • 2
  • 3
  • 4

至少会执行一次(如果换成while则没有输出,因为首次运行时条件就不满足):

{{#vardefine: i | 9999 }}{{#dowhile:
 | {{#ifexpr: {{#var: i }} < 1 | true }}
 | <nowiki/>
* {{#var: i }}{{#vardefine: i | {{#expr: {{#var: i }} + 1 }} }}
}}

  • 9999


dpl

展示指定页面的信息,包括页面长度、生成时间甚至模板参数。出自扩展 DynamicPageList3

多数情况下,其功能可以由SMW和LST扩展配合模板实现。此外,DPL官方文档阅读难度不低,Bwiki使用较早版本与新版本特性略有不同,因此不推荐优先使用DPL。

主要特性:

  • 支持多样的页面筛选方式,如类别(支持正则)、命名空间、链接、模板使用、标题、内容、修订日期、重定向等等。
  • 支持输出页面元数据(如:类别、大小、缓存日期和页面ID等等)、页面内容(章节、解析函数/标签的调用、模板参数等等)
  • 支持灵活的的输出格式和排序

文档:

语法

{{#dpl: 筛选页面 | 输出格式和控制 | 其他选项}}

如:{{#dpl:namespace=帮助|titlematch=解析%|mode=ordered|count=2}}
  1. 帮助:解析函数/uc
  2. 帮助:解析函数/autoedit

主要参数:

筛选页面
按类别:category、categorymatch、categoryregexp、notcategory、notcategorymatch、notcategoryregexp、categoriesminmax
按空间:namespace、notnamespace
按链接:linksfrom、notlinksfrom、linksto、notlinksto、linkstoexternal、imageused、imagecontainer
按模板:uses、notuses、usedby
按标题:title、titlematch、titleregexp、titlelt、titlegt、nottitlematch、nottitleregexp
按内容:includematch、includematchparsed、includenotmatch、includenotmatchparsed
按版本:lastrevisionbefore、firstrevisionsince、allrevisionsbefore、allrevisionssince、maxrevisions、minrevisions
按用户:(在bwiki无效)
……
其中,带match的指使用%匹配,如%wi%。带regexp指使用正则表达式。
输出
count 限制输出数量
offset 从中间指定位置开始输出
ordermethod 指定排序方式,如:size、pagetouched、pagesel、title、titlewithoutnamespace、sortkey......可以组合使用,以逗号隔开
order 排序方向 descending或ascending
mode 指定输出模式,如:unordered、ordered、none、inline、category和userformat。其中userformat是完全自定义,更灵活但是很复杂
format 完全自定义输出格式(隐式定义mode=userformat),格式:format=Startall,Start,End,Endall (见示例)。可指定占位符输出数据如页面名、大小、各类日期等,详情见示例和官方文档
include 为输出增加指定数据,如页面章节(如#章节名,##.*regexp.*)、模板参数({模板名}:参数)等等,多个值用逗号隔开。由于篇幅过大,详见官方文档的输出内容部分
secseparators 为include的数据指定前后附加内容。格式:Start1,End1,Start2,End2,...... (见示例)
……

dpl支持数十个参数,请参阅官方文档了解所有细节

示例

帮助空间的两个页面

{{#dpl:
|namespace = 帮助
|ordermethod=title
|count=2
}}

帮助空间的两个标题匹配解析函数/a%模式页面,手动指定以列表形式显示

Startall

Endall

{{#dpl:
|namespace = 帮助
|titlematch = 解析函数/a%
|format= Startall\n,* Start [[%PAGE%|%TITLE%]], End\n, \nEndall
|ordermethod=title
|count=2
}}

其中:

  • format的参数是format=Startall,Start,End,Endall
  • titlematch支持用%匹配页面(类似SQL中的like)
  • %PAGE% 和 %TITLE% 分别代表完整页面名,和页面标题(不带命名空间)

更多例子参见完整文档帮助:解析函数/dpl


dplchapter

从文本中提取章节内容出自扩展 DynamicPageList3

从指定文本中提取包含特定章节标题的内容,支持字数限制和链接跳转详情。出自扩展 DynamicPageList3

语法

{{#dplchapter: text | heading | limit | page | linktext }}

  • text:包含章节的文本内容。
  • heading:目标章节的标题。
  • limit(可选):输出内容的最大字符数。如果文本超出限制,会显示一个链接。
  • page(可选):当文本超出限制时,指向的页面链接。
  • linktext(可选):超出限制时显示的链接文本。

dplchapter会提取与指定标题匹配的章节正文内容(不包含标题本身)。当内容长度超过设定的限制时,会在输出中添加一个指向指定页面的链接,链接文本可自定义。

示例

{{#dplchapter:
Some text.
==== My Headline ====
the body of the desired chapter.
==== Another Chapter ====
Its text.
|My Headline}}

the body of the desired chapter.

{{#dplchapter:
Some text.
==== My Headline ====
the body of the desired chapter.
==== Another Chapter ====
Its text.
|My Headline|15|首页|.. read more}}

the body of .. read more


dplmatrix

将缩进列表转换为矩阵视图。出自扩展 DynamicPageList3

按照缩进列表标注的两个集合中元素的映射关系,生成矩阵视图。也可用于将DPL查询结果转换为表格。

语法

{{#dplmatrix: 矩阵名称 | yes | no | 模式 | '''缩进列表''' }}

  • 矩阵名称:矩阵的名称,显示在左上角单元格中。支持任意 wiki 格式(包括图片)。
  • yes(可选):有关系的显示内容,默认为 "x"。
  • no(可选):没有关系的显示内容,默认为空。
  • 模式(可选): 'normal'(默认值) 或 'flip'(行列交换)。
  • 缩进列表:定义矩阵内容的缩进列表。

通过自定义CSS,可以控制矩阵的布局(使用class=dplmatrix)。

示例

  • 生成一个简单的矩阵:
{{#dplmatrix:demo|<big>✓</big>|.||
one
 oho
 aha
three
 aha
 uhui ~~ UHU
two ~~ Two
   uhui ~~ UHU
}}

该示例将生成如下矩阵,其中 "demo" 显示在左上角,集合1包括"one"、"two"、"three ,集合2包括"oho"、"aha"、"uhui" 等。在one下边缩进编写oho和aha代表他们之间有映射关系,表格中对应位置将显示“✓”。其中,two的标签为Two(two ~~ Two),uhui的标签是UHU(uhui ~~ UHU)

demo aha oho UHU
one .
three .
Two . .


dplnum

靠猜测从文本中提取数字。出自扩展 DynamicPageList3

语法

{{#dplnum:text}}

  • text:待提取数字的文本
使用启发式算法(拍脑袋算法根据直觉、经验编写)从文本中识别并提取数字,支持英文数字格式和单位。


dplreplace

文本替换。出自扩展 DynamicPageList3

实际使用中更常用#replace

语法

{{#dplreplace:text|pattern|replacement}}

  • text:要进行替换操作的原始文本。
  • pattern:用于匹配的正则表达式,遵循 PHP preg_replace() 的语法。
  • replacement:用于替换匹配部分的字符串,可包含对匹配组的引用。

将给定的patterntext中替换为replacement

示例

  • 基本替换:{{#dplreplace:abrakadabra|ab|AB}} → ABrakadABra
    • 将所有 "ab" 替换为 "AB"。
  • 正则和捕获组:{{#dplreplace:abrakadabra|/a(.*?)r/|A\1_r_}} → Ab_r_Akadab_r_a
    • 仅在 "a" 后面有 "r" 的情况下,将 "a" 替换为 "A" 并插入 "_r_"。
  • 无匹配:{{#dplreplace:hello world|xyz|123}} → hello world
    • "xyz" 不存在于文本中,返回原始文本不变。


dplvar

用于设置和获取变量的值。出自扩展 DynamicPageList3

支持设置多个变量的值,额外赋予默认值,以及检索这些变量的当前值。

实际使用中,更广泛的使用#var,因为扩展 Variables 提供了更多更强大的功能。

语法

{{#dplvar:set   |name1|value1|name2|value2|..|..}}:设置一个或多个变量名及其对应的值。
{{#dplvar:default|name|value}}:设置默认值。
{{#dplvar:      name}}:获取指定变量的值。

示例

{{#dplvar:set|a|x|b|y|c|z}} {{#dplvar:default|a|aaaa}} {{#dplvar:default|d|dddd}}
a = {{#dplvar:a}}
b = {{#dplvar:b}}
c = {{#dplvar:c}}
d = {{#dplvar:d}}

a = x
b = y
c = z
d = dddd

```

E

explode

分割字符串。出自扩展 ParserFunctions 的String functions大规模使用时性能低下,推荐使用Lua模块。请参考扩展置顶警告MediaWiki代码库 r51497中的暴论“parsers in the ugliest, most inefficient programming language known to man: MediaWiki wikitext with ParserFunctions.”、“WARNING: enabling this may have an adverse impact on the sanity of your users.”

使用指定分隔符将字符串分割成多段,并返回指定位置的分割结果。如果指定位置超过分割后的数量,返回空字符串。

语法

{{#explode:文本 | 分隔符 | 位置索引 | 限制 }}

  • 文本:要分割的字符串。
  • 分隔符:用于分割字符串的分隔符。
  • 位置索引:要返回的分割结果的位置索引。从0开始,可以是正数或负数,负数表示从末尾开始计数。
  • 限制(可选):分割的最大数量。

示例

  • {{#explode:apple,banana,cherry | , | 1}}banana
  • {{#explode:one two three four | | -1}}four
    • 空格分隔,位置索引 -1,得到最后一个分割 'four'。
  • {{#explode:alpha-beta-gamma | - | 2}}gamma
  • {{#explode:aaa bbb ccc ddd eee| |2|3}}ccc ddd eee


expr

计算数学表达式。出自扩展 ParserFunctions

此函数在Scribunto扩展中也可用,函数名为mw.ext.ParserFunctions.expr

语法

{{#expr: 表达式 }}

支持的表达式(优先级自上而下)
类型 运算符
括号 ( )
数字 1234.5e (2.718) 、 pi (3.142)
e(科学计数法) + -(正负号)
一元
运算符
not ceil trunc floor abs exp ln sin cos tan acos asin atan
二元
运算符
^
* / div mod
+ -
round
逻辑运算符 = != <> > < >= <=
and
or

说明:

  • 详细功能见Manual:Expr parser function syntax
  • 结果精度、格式取决于服务器系统和语言的数字格式。
  • 逻辑运算中非零即真,就是说只有0为false,其他数为true。字符串比较可以用#ifeq
  • 部分魔术字可指定参数 R 避免结果包含逗号,如{{NUMBEROFUSERS:R}}9959097
  • 溢出可能导致未预期报错:{{#expr:123 mod 2^64}}零除。
  • 支持使用 #iferror 处理错误


示例

  • {{#expr: 1 + 2 * 3 }}7
  • {{#expr: 1.1 or 0}}1 逻辑运算中非零即真
  • {{#expr: 1+ }}表达式错误:缺少+的操作数。


F

filepath

返回文件的URL路径。MediaWiki原生支持。

常用于获取图片的完整URL,支持指定大小。

相比于利用重定向页面(特殊:重定向/file),filepath可以一次解析多次使用。大量图片重定向时,很容易触发BWiki访问频率限制(资源加载请求失败,HTTP状态码514)

语法

{{filepath:文件名|[选项]|[大小]}}

  • 文件名:文件名称,无需包含命名空间
  • 选项(可选):指定 nowiki,以纯文本非链接显示
  • 大小(可选):指定图片尺寸,如 300 、 200x300px

示例

获取图片文件URL

{{filepath: Toolswikilogo.png }}https://patchwiki.biligame.com/images/tools/4/41/fr3pnybxu6c0xtdypvwbfc5z1i1gcgy.png
{{filepath: Toolswikilogo.png | 60 }}https://patchwiki.biligame.com/images/tools/thumb/4/41/fr3pnybxu6c0xtdypvwbfc5z1i1gcgy.png/60px-Toolswikilogo.png


配合CSS用作背景图:

<div class="demo-wiki-logo-type-a"></div>
{{#tag:bstyle|/*{{#tag:pre|*/
.demo-wiki-logo-type-a{
width:120px;
height:25px;
color:red;
background:url('{{filepath:Toolswikilogo.png | 120}}');
}
/*}}*/}}

(其中bstyle标签用于向页面插入CSS,pre标签用于避免css传入bstyle时被当做wikitext解析。)


在页面中显示URL,但不带链接

{{filepath: Toolswikilogo.png | nowiki | 60 }}https://patchwiki.biligame.com/images/tools/thumb/4/41/fr3pnybxu6c0xtdypvwbfc5z1i1gcgy.png/60px-Toolswikilogo.png
{{filepath: Toolswikilogo.png | nowiki }}https://patchwiki.biligame.com/images/tools/4/41/fr3pnybxu6c0xtdypvwbfc5z1i1gcgy.png


follow

获取重定向页面的目标页面。出自扩展 ParserPower

语法

{{#follow: 页面名}}

需要注意缓存问题,结果可能不会实时更新。

示例

  • {{#follow: 帮助:Expr}} → 帮助:解析函数/expr(帮助:Expr是一个重定向页面)
  • {{#follow: 首页}} → 首页
  • {{#follow: 不存在的页面}} → 不存在的页面


forargs

在模板中遍历参数并对每个参数执行指定代码的解析函数。出自扩展 Loops

forargs解析函数允许用户通过指定过滤器、键变量名和值变量名,遍历模板传入的参数,并在每次迭代中执行提供的代码块。

语法

{{#forargs: prefix | key | value | code}}

  • prefix:参数名的前缀。
  • key:变量名,存储参数名,不包括前缀。
  • value:变量名,存储参数值。
  • code:每次循环时被解析的wikitext,支持使用、文档输出参数名和值。

如果前缀非数字,仅处理匹配前缀的命名参数。前缀是数字时,处理所有参数(编号参数和命名参数)中匹配前缀的参数。

前缀为空时,遍历处理所有参数。

示例

在模板:Test中编写如下代码,遍历前缀为a的参数:

<includeonly>{{#forargs:a
 | key
 | value
 | {{#var:key}} = {{#var:value}}<br>
}}
</includeonly><noinclude>
{{Test|a1=1|a2=2|b1=4|b2=5|c1=6|c2=7|8|9}}
</noinclude>

输出为:

1 = 1
2 = 2


在模板:Test中编写如下代码,遍历所有参数:

<includeonly>{{#forargs:| key | value | {{#var:key}} = {{#var:value}}; }}</includeonly><noinclude>
{{Test|a1=1|a2=2|a3=3|b1=4|b2=5|c1=6|c2=7|8|9}}
</noinclude>

输出为:

1 = 8; 2 = 9; a1 = 1; a2 = 2; a3 = 3; b1 = 4; b2 = 5; c1 = 6; c2 = 7;


使用switch跳过或单独处理指定参数:

<includeonly>{{#forargs:| key | value |{{#switch: {{#var:key}}
| a1 = <!-- 跳过a1 -->
| b2 = 单独处理b2; 
| #default = {{#var:key}} = {{#var:value}}; 
}}}}</includeonly><noinclude>
{{Test|a1=1|a2=2|a3=3|b1=4|b2=5|c1=6|c2=7|8|9}}
</noinclude>

输出为:

1 = 8;2 = 9;a2 = 2;a3 = 3;b1 = 4;单独处理b2;c1 = 6;c2 = 7;


注意,forargs的参数key、value会在展开wikitext后才按指定格式输出,这可能会导致非预期行为。

假设模板B的内容是

{{#vardefine:active|233}}

模板A的内容是

{{#vardefine:active|0}}
{{#forargs:| k | v | {{#var:active}} }}

那么,{{A| {{B}} }}的结果会是233


formatdate

日期格式用户化。MediaWiki原生支持。

将ISO 8601日期转换为 月日年 等格式,如10月 1, 2025。由于支持的格式均不符合中文表述习惯,因此对中文wiki几乎无用。

语法

{{#formatdate: YYYY-MM-DD | 格式 }}
  • 日期:必须为YYYY-MM-DD格式(ISO 8601),1月写为01,公元221年写为0221,公元前551写为-0551
  • 格式(可选):指定输出格式,支持ISO 8601、dmy、mdy和ymd,默认为用户偏好设置。(dmy,指day month year)


  • 输出是HTML,如:<span class="mw-formatted-date" title="1949-10-01">10月 01, 1949</span>

如果输入日期格式无效或格式化失败,将原样返回输入日期。

用户可以在特殊:参数设置中指定日期格式(默认,或ISO 8601格式)。

示例

  • ISO 8601标准格式 {{#formatdate:2025-10-01|ISO 8601}}<span class="mw-formatted-date" title="2025-10-01">2025-10-01</span>2025-10-01
  • 支持
    • 年/月/日格式 {{#formatdate:2025-10-01|ymd}}<span class="mw-formatted-date" title="2025-10-01">2025 10月 1</span>2025 10月 1
    • 月/日/年格式 {{#formatdate:2025-08-01|mdy}}<span class="mw-formatted-date" title="2025-08-01">8月 1, 2025</span>8月 1, 2025
    • 日/月/年格式 {{#formatdate:2025-06-01|dmy}}<span class="mw-formatted-date" title="2025-06-01">1 6月 2025</span>1 6月 2025
  • 错误输入示例:
    • 输入格式错误时,不会执行格式化,日期将按原样返回。
    • 缺少前导零 {{#formatdate:2025-1-1|ISO 8601}}2025-1-1
    • 错误格式 {{#formatdate:25/12/2025|ISO 8601}}25/12/2025


formatnum

数字格式本地化。MediaWiki原生支持。

根据Wiki语言配置,将数字格式本地化。比如对于孟加拉语Wiki {{formatnum:3}}

语法

{{formatnum: 数字 | 选项 }}

参数

  • 数字:需要本地化的数字,支持小数
  • 选项(可选)
    • R - 还原为原始数字,移除分隔符。
    • NOSEP - 数字本地化时,不包含分隔符(对于中英语言无用)。

数字的格式需要符合Wiki平台所设置语言的标准才能获得正确结果。因此对于站点语言为中文的BWiki,此解析函数的作用仅剩下增加/移除逗号分隔符(千分撇)。

示例

  • 基本 {{formatnum: 0012345.67890 }} → 0,012,345.67890
  • 还原 {{formatnum: 12,345.678 | R }} → 12345.678
  • 小数 {{formatnum: .678 }} → .678
  • 无作用 {{formatnum: 12,345.678 | NOSEP }} → 12,345.678

对于设为孟加拉语的Wiki:

  • {{formatnum:987654321.654321}}৯৮,৭৬,৫৪,৩২১.৬৫৪৩২১
  • {{formatnum:৯৮,৭৬,৫৪,৩২১.৬৫৪৩২১ |R}}987654321.654321
  • {{formatnum:987654321.654321 |NOSEP}}৯৮৭৬৫৪৩২১.৬৫৪৩২১ (没有逗号分隔符)


forminput

表单入口。提供一个输入框供用户输入页面名称,提供一个跳转到指定表单创建该页面。出自扩展 Page Forms

请参阅官方文档:Extension:Page Forms/Linking to forms

示例:NIKKE胜利女神WIKI - 表单:咨询对话表单

formlink

表单入口。提供一个到指定表单的链接。出自扩展 Page Forms

请参阅官方文档:Extension:Page Forms/Linking to forms

formredlink

表单入口。提供一个红色的,到指定表单的链接。红色链接在wiki中表示为不存在的页面,点击红色链接通常意味着创建页面。出自扩展 Page Forms

请参阅官方文档:Extension:Page Forms/Linking to forms


fornumargs

遍历模板编号参数,以指定格式输出。出自扩展 Loops

仅在模板中使用。遍历模板调用时传入的编号参数(显式或隐式编号),按照指定的格式输出。

语法

{{#fornumargs: 键变量名 | 值变量名 | 代码块}}

  • 键变量名(可选):存储参数位置的变量名(如"1"、"2"等)
  • 值变量名:存储参数值的变量名
  • 代码块:每次循环执行的wikitext代码
  • 参数处理特性:
    • 自动过滤非数字参数(如"key=value"中key不是纯数字时会被忽略)
    • 支持显式编号参数(如1=值)和隐式参数(如{{模板|值1|2=值2|a=不包括a}}
    • 参数键会按数字升序排列处理

示例

  • 基础用法
{{#fornumargs: pos | val |<nowiki/>
* {{#var:pos}}={{#var:val}}
}}
 调用:{{模板|苹果|B=香蕉|梨|5=芒果}}
 输出:
 * 1=苹果
 * 2=梨
 * 5=芒果


FULLPAGENAME

带命名空间的完整页面名MediaWiki原生支持。

根据输入返回包含命名空间前缀的完整页面名称,保留原始格式和大小写。

语法

{{FULLPAGENAME}}

{{FULLPAGENAME: 页面名 }}

  • 页面名(可选):任意文本(支持伪页面名和特殊字符)

无效输入(无法创建有效标题)时返回空字符串

示例

  • 当前页面 {{FULLPAGENAME}} → 帮助:解析函数
  • 带命名空间 {{FULLPAGENAME: 帮助:Fullpagename }} → 帮助:Fullpagename
  • 保留空格 {{FULLPAGENAME: a b c }} → A b c
  • 特殊字符 {{FULLPAGENAME: /a_b/c }} → /a b/c
  • 无效输入 {{FULLPAGENAME: 特殊:所有页面 }}


FULLPAGENAMEE

带命名空间的完整页面名,使用URL编码。MediaWiki原生支持。

根据输入页面名,返回包含命名空间前缀的完整页面名称,并进行URL编码,保留原始格式和大小写。

语法

{{FULLPAGENAMEE}}

{{FULLPAGENAMEE: 页面名 }}

  • 页面名(可选):任意文本(支持伪页面名和特殊字符)

无效输入(无法创建有效标题)时返回空字符串

示例

  • 当前页面 {{FULLPAGENAMEE}} → %E5%B8%AE%E5%8A%A9:%E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0
  • 带命名空间 {{FULLPAGENAMEE: 帮助:Fullpagename }} → %E5%B8%AE%E5%8A%A9:Fullpagename
  • 保留空格 {{FULLPAGENAMEE: a b c }} → A_b_c
  • 特殊字符 {{FULLPAGENAMEE: /a_b/c }} → /a_b/c
  • 无效输入 {{FULLPAGENAMEE: 特殊:所有页面 }}


fullurl

获取指定页面的完整URL。MediaWiki原生支持。

可附加查询参数。支持本地和跨wiki页面,自动处理URL编码。

语法

{{fullurl: 页面名称 | 查询参数 }}

  • 页面名称:支持命名空间、跨wiki链接
  • 查询参数(可选):以key=value形式添加,多个参数用&连接

示例



fullurle

获取指定页面的完整URL。MediaWiki原生支持。

可附加查询参数,与fullurl一致。但url中的部分特殊字符会被转换为 HTML 实体。

语法

{{fullurle: 页面名称 | 查询参数 }}

  • 页面名称:支持命名空间、跨wiki链接
  • 查询参数(可选):以key=value形式添加,多个参数用&连接

会被转换为HTML实体的符号:&&amp;"&quot;<&lt;>&gt; (见PHP函数htmlspecialchars 文档)

示例

  • 基本 {{fullurle:帮助:解析函数}}https://wiki.biligame.com/tools/%E5%B8%AE%E5%8A%A9:%E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0
  • 带参数 {{fullurle:Test|action=edit}}https://wiki.biligame.com/tools/index.php?title=Test&amp;action=edit
  • 带参数 {{fullurle:Test|a=1<2>1&b=2"2&c=3'3}}https://wiki.biligame.com/tools/index.php?title=Test&amp;a=1&lt;2&gt;1&amp;b=2&quot;2&amp;c=3'3
  • 分类页 {{fullurle:分类:模板}}https://wiki.biligame.com/tools/%E5%88%86%E7%B1%BB:%E6%A8%A1%E6%9D%BF
  • 跨wiki {{fullurle:arxiv:2501.12948}}https://www.arxiv.org/abs/2501.12948


G

gender

根据用户设置的性别输出不同文字。MediaWiki原生支持。

BWiki中,用户默认称呼是中性,且每一个wiki均独立设置。因此gender函数在多数情况下没用。

语法

{{gender:用户名|男性文字|女性文字|中性文字}}

  • 用户名:在BWiki指用户的b站uid
  • 性别文字:可填写1-3个,分别对应男性、女性和中性。

性别文字参数只有一个时,默认使用中性。参数有两个时,如果用户没有指定性别则默认使用男性。

示例

  • {{gender:39886146|male text|female text|unspecified}} → unspecified (Lu在参数设置中指定了性别)
  • {{gender:39886146|unspecified}} → unspecified (仅有一个文字参数时直接输出)
  • {{gender:|male text|female text|unspecified}} → unspecified (bwiki默认使用中性)
  • {{gender:|male|female}} → male 如果不给出中性文字,默认是男性


GRAMMAR

词形变化。MediaWiki原生支持。

根据词形变化代码输出给定的词的正确的词形变化(与语言相关)。语法变形被用于波兰语这样的屈折语。需要在服务器language.php中手动逐一添加。

对于BWiki这样的中文Wiki几乎无用。

语法

{{GRAMMAR:N|word}}

  • N: 词形变化代码
  • word: 要转换的词

示例

{{GRAMMAR:elative|wiki}} → wikistä (对于芬兰语wiki)


I

if

条件分支函数。出自扩展 ParserFunctions

根据条件字符串是否为空(含空白)返回不同值。

语法

{{#if: 条件 | 非空输出值 | 空输出值 }}

  • 条件:要检查的wikitext(自动去除首尾空白)
  • 非空输出值:当测试字串非空时输出的内容
  • 空输出值(可选):当测试字串为空时输出的内容,默认为空字符串

示例

  • 基本用法 {{#if: 文本 | 有内容 | 无内容}} → 有内容
  • 空白处理 {{#if: | 有内容 | 无内容}} → 无内容
  • 省略第三个参数 {{#if: | 有内容}} → (无输出)
  • 模板变量检测 {{#if:{{{参数|}}} | 参数已填写 | 参数为空}}



ifeq

条件分支函数。出自扩展 ParserFunctions

比较两个输入值是否相等,根据比较结果返回对应字符串。

语法

{{#ifeq: 值1 | 值2 | 相等返回值 | 不等返回值 }}

  • 值1:第一个比较值
  • 值2:第二个比较值
  • 相等返回值:当两值相等时返回的内容
  • 不等返回值(可选):当两值不等时返回的内容(可选,默认空字符串)

当两个参数都可转换为有效数值时进行数值比较(忽略前导零和科学计数法差异),否则进行严格文本比较(区分大小写)。

示例

  • 数值比较 {{#ifeq: 01 | 1 | equal | not equal}} → equal
  • 数值比较 {{#ifeq: 1e3 | 1000 | equal | not equal}} → equal
  • 文本比较 {{#ifeq: "01" | "1" | equal | not equal}} → not equal
  • 大小写敏感 {{#ifeq: Foo | foo | equal | not equal}} → not equal
  • 标签比较
    {{#ifeq: <nowiki>foo</nowiki> | <nowiki>foo</nowiki> | equal | not equal}}
    
    → not equal(在解析函数内部的标签和解析函数(如nowiki、pre、includeonly)会被暂时替换为一个唯一的Strip marker。这会影响到比较结果)



iferror

条件分支函数,基于错误检测。出自扩展 ParserFunctions

检测输入wikitext解析结果中是否存在错误标记(由class="error"的HTML元素表示),并根据检测结果返回不同值。

语法

{{#iferror: 测试wikitext | 错误时返回值 | 正确时返回值 }}

  • 测试wikitext:需要检测的wikitext,如#expr表达式
  • 错误时返回值(可选):当检测到错误时返回的内容。如果留空且检测到错误,将返回空字符串
  • 正确时返回值(可选):当未检测到错误时返回的内容。如果留空且未检测到错误,将返回测试字符串本身


错误检测基于HTML元素中是否包含class="error"属性,仅限strong/span/p/div标签。这类错误可能来自exprtimerel2abs产生,模板(Templates)错误,如循环、递归和其他解析器错误也能产生。

示例

  • 基本用法 {{#iferror: {{#expr: 1 + 2 }} | error | correct }} → correct
  • 检测错误 {{#iferror: {{#expr: 1 + X }} | error | correct }} → error
  • 省略正确返回值 {{#iferror: {{#expr: 10/2 }} | error }} → 5
  • 同时省略返回值 {{#iferror: <span class="error">Err</span> }}
  • 显式错误元素 {{#iferror: <div class="warning error">警示</div> | 发生错误 }} → 发生错误


ifexist

【高开销】条件分支函数,条件是指定页面/文件是否存在。出自扩展 ParserFunctions

检查目标页面标题是否存在并返回对应结果值,支持检测文件是否存在。不支持跨wiki链接。

语法

{{#ifexist: 页面标题 | 存在时的值 | 不存在时的值 }}

  • 页面标题:要检查的页面标题
  • 存在时的值:当页面存在时输出的内容
  • 不存在时的值:当页面不存在时输出的内容

使用此函数的页面被视为链接到了要检查的页面,计入对应页面的链入页面


此函数被标记为“高开销”。在bwiki,每个页面最多能使用100次高开销函数,超出后始终返回“不存在时的值”,并添加页面到分类:有过多高开销解析器函数调用的页面。 不过,如果检查目标是特殊页面、跨wiki链接或命中查询缓存,则不增加高开销计数(即,检查特殊页面存在性不是高开销的,检查一百次同一页面被视为使用一次高开销函数)。


要了解页面中高开销函数的使用情况,可以在编辑预览时,查看底部“解析器分析数据”表格。


超限制时的替代方式:部分情况可用CSS选择器如a.newa:not(.new)模拟部分效果。 如果一定需要同时判断大量页面是否存在,文件可以通过函数filepath结果判断。页面可以通过判断#contributors替代,它们虽然实际开销不低,但没有被标记为“高开销”,没有单页使用次数限制。

示例

  • 普通页面:{{#ifexist: Help:解析函数 | exists | doesn't exist }} → exists
  • 不存在页面:{{#ifexist: 帮助:如何PUA辰纱 | exists | doesn't exist }} → doesn't exist
  • 特殊页面:{{#ifexist: 特殊:监视列表 | exists | doesn't exist }} → exists
  • 检查文件:{{#ifexist: 文件:Test.png | exists | doesn't exist }} → exists
  • 系统消息:{{#ifexist: MediaWiki:Copyright | exists | doesn't exist }} → doesn't exist


ifexpr

条件分支函数。条件是一个表达式。出自扩展 ParserFunctions

计算表达式后,根据结果的真假返回指定的两个值之一。空/零值为假,出错为假,否则为真。

语法

{{#ifexpr: 表达式 | 真值 | 假值 }}

  • 表达式:数学表达式(支持运算符与expr相同)
  • 真值(可选):表达式为真时的返回值
  • 假值(可选):表达式为假时的返回值

当表达式为空或包含错误时,会被视为假值。零值视为假,非零值视为真。

示例

  • 空表达式 {{#ifexpr: | yes | no }} → no
  • 逻辑运算 {{#ifexpr: 0 = 0 or 1 = 0 | yes }} → yes
  • 参数省略 {{#ifexpr: 1 < 0 | yes }}
  • 错误处理 {{#ifexpr: = | yes | no }}Expression error: Unexpected = operator.
  • 数值精度 {{#ifexpr: 12345678901234567 = 12345678901234568 | equal | not equal}} → equal
    • 说明:大整数比较会转换为浮点数导致精度丢失,建议使用#ifeq进行精确比较


imgh

获取指定图片高度。出自扩展 ImageSizeInfoFunctions

语法

{{#imgh: 图片名称 }}

  • 图片名称:需包含文件扩展名,可不带"文件:"前缀

不存在的文件返回0。

由于需要查询并读取文件,此函数的开销较高。在新版此扩展中,imgh被标记为高开销函数(BWiki目前使用的版本没有)。

示例

  • 获取存在图片的高度 {{#imgh: 文件:Wikilogo.png }} → 101
  • 省略命名空间前缀 {{#imgh: Wikilogo.png }} → 101
  • 不存在的文件 {{#imgh: aaaaaaaaaaa.png }} → 0


imgw

获取指定图片宽度。出自扩展 ImageSizeInfoFunctions

语法

{{#imgw: 图片名称 }}

  • 图片名称:需包含文件扩展名,可不带"文件:"前缀

不存在的文件返回0。

由于需要查询并读取文件,此函数的开销较高。在新版此扩展中,imgw被标记为高开销函数(BWiki目前使用的版本没有)。

示例

  • 获取存在图片的宽度 {{#imgw: 文件:Wikilogo.png }} → 440
  • 省略命名空间前缀 {{#imgw: Wikilogo.png }} → 440
  • 不存在的文件 {{#imgw: aaaaaaaaaaa.png }} → 0


info

一个小图标,点击显示悬浮框。出自扩展 Semantic MediaWiki SMW功能强大,应用广泛。<br>如需单页内大量调用,请考虑使用模板、模块批量查询,这能提升综合体验、降低资源消耗。<br>另请参阅灰机、Fandom的相关文档,他们详述了对SMW的顾虑和限制。

移动端不易精确点击,使用需谨慎。


语法

{{#info: <text>|<icon>|max-width=<width>|theme=<theme>}}

  • 悬浮框文本
  • icon (可选):infoicon可选项info、noteicon可选项note、warningicon可选项warning、erroricon可选项error
  • max-width (可选): 最大宽度,正整数。
  • theme (可选):悬浮框样式:square-bordertheme可选项square-border、square-border-lighttheme可选项square-border-light

示例

  • 文本文本 {{#info: 悬浮框文本 }}文本文本 悬浮框文本
  • 指定图标 {{#info: 请按格式输入,例如:+86-12345678901|note}}请按格式输入,例如:+86-12345678901
  • 指定宽度:{{#info: 悬浮提示中要显示大量文字。……|note|max-width=600}}悬浮提示中要显示大量文字。还有更多的文字。还有更多的文字。还有更多的文字。还有更多的文字。悬浮提示中要显示大量文字。还有更多的文字。还有更多的文字。还有更多的文字。还有更多的文字。
  • 指定主题:{{#info: 使用不同主题样式的悬浮提示。|note|theme=square-border-light}}使用不同主题样式的悬浮提示。


int

获取指定系统文本。MediaWiki原生支持。

根据消息名称(Message key)获取系统文本,支持填充文本中的参数。

特殊:所有信息页面展示所有系统消息名称,在MediaWiki命名空间创建对应页面可以覆盖默认文本。

语法

{{int: 消息名称 | 参数1 | 参数2 | ... }}

  • 消息名称(必需):如"编辑"对应edit
  • 参数1...N(可选):将按顺序替换消息内容中的$1、$2等占位符

消息内容中的HTML标签会被解析,若消息键不存在将返回空值:⧼消息名称⧽

示例

  • 基础用法: {{int: edit}} → 编辑
  • 带参数: {{int: movepage-page-moved | 页面A | 页面B }} → 页面页面A已经移动到页面B。
  • 编辑器上传文件的默认说明: {{int: msu-comment}} → 基于MsUpload的文件上传
  • 不存在: {{int: m123456789}} → ⧼m123456789⧽


invoke

调用Lua模块。出自扩展 Scribunto

执行通过Lua编写的模块函数,提供高性能的复杂逻辑处理能力。

Lua模块,用于替代需要编写复杂嵌套解析函数的需求,提升性能和可读性。也用于充当“数据库”,如读取、检索以json格式存储的数据,便于统一的数据存储更新。

请参阅:

模块和Lua
灰机Wiki: 帮助:模块 (推荐)

语法

{{#invoke: 模块名 | 函数名 | 参数1 | 参数2 | ... }}

  • 模块名:位于模块命名空间的页面名
  • 函数名:模块中定义的Lua函数名
  • 参数(可选):传递给Lua函数的参数,可指定参数名

当模块或函数不存在,或发生运行时错误时,会生成错误信息。

示例

  • 基础调用 {{#invoke:Math|add|5|3}} → 执行Math模块的add函数
  • 带复杂参数 {{#invoke:DataProcessor|format_table|header=Yes|data={{FULLPAGENAME}}}} → 动态处理页面数据


L

language

根据语言代码获取语言名称。MediaWiki原生支持。

语法

{{#language: 语言代码 | 目标语言代码 }}

  • 语言代码:ISO 639/ISO 15924语言代码(如zh、en、ja)
  • 目标语言代码(可选):不支持(需要额外的CLDR扩展)。指定返回名称所用的语言代码

在MW1.43及以上,支持无参数调用,请参阅官方文档(BWiki目前的MW版本是1.37)。

示例

  • {{#language: zh }} → 中文
  • {{#language: zh-hans }} → 中文(简体)
  • {{#language: en }} → English
  • {{#language: xxx }} →xxx (不存在的代码)


lc

将字符串转换为小写形式MediaWiki原生支持。

该函数可将输入字符串转换为全小写形式,或仅首字母小写,支持多语言字符处理。

语法

{{lc: 文本 }}

  • 文本:需要转换小写的原始文本

示例

  • {{lc: ABCDefg}} → abcdefg
  • {{lc: QWER脸滚键盘 }} → qwer脸滚键盘
  • {{lc: 一二三壹贰叁 }} → 一二三壹贰叁


lcfirst

将字符串的首字母转换为小写。MediaWiki原生支持。

语法

{{lcfirst: 文本 }}

  • 文本:需要转换的字符串。

示例

  • {{lcfirst: QEWR脸滚键盘 }} → qEWR脸滚键盘
  • {{lcfirst: 你们说的QEWR是什么意思啊? }} → 你们说的QEWR是什么意思啊? (无效案例)


len

计算字符串长度。出自扩展 ParserFunctions 的String functions大规模使用时性能低下,推荐使用Lua模块。请参考扩展置顶警告MediaWiki代码库 r51497中的暴论“parsers in the ugliest, most inefficient programming language known to man: MediaWiki wikitext with ParserFunctions.”、“WARNING: enabling this may have an adverse impact on the sanity of your users.”

获取wikitext解析后的字符数量,支持多字节字符计算。

语法

{{#len: 字符串 }}

  • 字符串(可选):需要计算长度的文本内容,留空时返回0

函数计算时会自动忽略文本首尾空格,但保留中间空格和换行符。HTML实体按源码形式计算长度。

示例

  • 基础计算 {{#len: Žmržlina九 }} → 9
  • 基础计算 {{#len: 张王李赵1234 }} → 8
  • HTML实体 {{#len: &#32; }} → 5
  • 会被替换为解析标记(Strip marker)的标签
    • {{#len: <a>Hello</a>tt }} → 2
    • {{#len: <gallery>Hello</gallery>tt }} → 2
    • {{#len: <ref>Hello</ref>tt }} → 2
  • 直接渲染的标签
    • {{#len: <div>Hello</div>tt }} → 18
    • {{#len: <span>Hello</span>tt }} → 20


listfilter

列表过滤。出自扩展 ParserPower

支持保留/排除项、模板条件等多种过滤方式,输出格式化后的新列表。

语法

{{#listfilter:
 |list= 
 |insep= 
 |outsep= 
 |keep= 
 |keepsep= 
 |keepcs= 
 |remove= 
 |removesep= 
 |removecs= 
 |token= 
 |tokensep= 
 |fieldsep= 
 |indextoken= 
 |pattern= 
 |template= 
 |counttoken= 
 |intro= 
 |outro= 
 |default= 
}}

核心参数:

  • list: 列表。如item 1,item 2,item 3
  • insep: 可选,输入分隔符,默认逗号,。用于分割参数list,构建列表

输出格式控制,可选:

  • outsep: 输出分隔符,默认逗号。用作输出时列表项的分隔符。
  • intro, outro: 输出时指定前置和后置内容,列表为空时不输出。用于避免在列表前后使用if来控制前后内容。
    • counttoken: 占位符,用于在intro, outro参数中填充过滤后的列表项数量
  • default: 过滤后列表如果为空时的输出。

过滤参数,可选:

  • keep: 指定保留值,默认不区分大小写。指定此参数将无视 removetemplatepattern 参数。
    • keepsep: 指定保留值分隔符,默认为逗号
    • keepcs: 设为yes时,保留值keep将区分大小写
  • remove: 指定移除值,默认不区分大小写。指定此参数将无视 templatepattern 参数。
    • removesep: 指定多个移除值的分隔符,默认为逗号
    • removecs: 设为yes时,移除值remove将区分大小写
  • token, pattern: token作为占位符,pattern是条件wikitext,每个列表项都将被代入pattern中占位符的位置计算结果,如果是remove,对应项将被移出
    • indextoken: pattern中的token将被替换为(列表项的)序号而不是值
  • tokensep, fieldsep: fieldsep是用于列表项的分隔符,此时token可指定多个占位符(默认分隔符是逗号,也可通过tokensep指定),pattern能单独针对列表项的一部分做筛选
  • template: 通过模板处理列表项,每个列表项被作为参数1传入模板。如果模板返回值是remove,此项会被移除。使用参数会忽略token、tokensep和pattern
    • fieldsep: 列表项分隔符,将每个列表项分割为多个参数传入模板

过滤参数优先级:keep > remove > template > pattern

示例

  • {{#listfilter:list=Apple,Orange,Banana|keep=apple,banana}} → Apple, Banana
  • {{#listfilter:list=1,10,100,1000|token=@|pattern=\{\{#ifexpr:@\g99\!remove\!keep\}\} }} → 1, 10
    • 其中,pattern是手动转义的条件,{{#ifexpr:@>123|remove|keep}}
    • 获得方式:<esc>{{#ifexpr:@>123|remove|keep}}</esc> → \{\{#ifexpr:@\g123\!remove\!keep\}\}
    • 对于其他平台,可以直接用esc标签包裹条件作为参数,bwiki需要手动转义(这是一个bug特性

尚需进一步测试来了解平台bug对参数造成的限制。


listmap

列表排序、格式化输出。出自扩展 ParserPower

按照指定的格式和排序方式输出列表元素。只能按字母、数字顺序排序、支持区分大小写和升降序。

语法

{{#listmap:
 |list=
 |insep=
 |outsep=
 |token=
 |tokensep=
 |fieldsep=
 |indextoken=
 |pattern=
 |template=
 |sortmode=
 |sortoptions=
 |duplicates=
 |counttoken=
 |intro=
 |outro=
 |default=
}}

核心参数:

  • list: 列表。如item 1,item 2,item 3
  • insep: 可选,输入分隔符,默认逗号,。用于分割参数list,构建列表

输出格式控制,可选:

  • outsep: 输出分隔符,默认逗号。用作输出时列表项的分隔符。
  • intro, outro: 输出时指定前置和后置内容,列表为空时不输出。用于避免在列表前后使用if来控制前后内容。
    • counttoken: 占位符,用于在intro, outro参数中填充列表项数量
  • default: 过滤后列表如果为空时的输出。

列表项格式参数,可选:

  • token, pattern: token作为占位符,pattern是格式wikitext,每个列表项都将被代入pattern中占位符的位置输出
    • indextoken: pattern中的token将被替换为(列表项的)序号而不是值
  • tokensep, fieldsep: fieldsep是用于列表项的分隔符,此时token可指定多个占位符(默认分隔符是逗号,也可通过tokensep指定),pattern能单独针对列表项的一部分做格式控制
  • template: 通过模板处理列表项,每个列表项被作为参数1传入模板。使用参数会忽略token、tokensep和pattern
    • fieldsep: 列表项分隔符,将每个列表项分割为多个参数传入模板

排序参数,可选:

  • sortmode: 排序时机。值为以下选项之一:
    • nosort 不排序
    • presort 先排序,再格式化列表项。如果格式化不影响排序,使用此选项效率更高。
    • sort 或 postsort 先按格式化列表项,后排序
  • sortoptions: 排序方式,值为以下的一个或多个选项:
    • alpha 或 numeric: 按字母或数字排序,默认字母
    • asc 或 desc: 升序和降序排序
    • ncs 或 cs: 不区分大小写(ncs),或区分(cs),仅对alpha排序生效,默认不区分大小写
  • duplicates: 重复值处理,值为以下选项之一:
    • keep 保留重复值
    • prestrip 在格式化前移除重复值
    • strip 或 poststrip 在格式化后移除重复值。注意,此时wikitext尚未被解析,因此即使指定此选项,获得的结果仍然可能有重复项。
    • pre/poststrip 在格式化前、后均移除一次重复值(目前由于扩展本身的bug,此选项仅能在格式化前执行一次)


示例

  • {{#listmap:list=Apple,Orange,Banana|token=@|pattern=[[首页|@]]}}Apple, Orange, Banana
  • {{#listmap:list=1,10,100,1000|token=@|pattern=\{\{#ifexpr:@\g99\!aa@\!bb\}\} }} → bb, bb, aa100, aa1000
    • 其中,pattern是手动转义的条件,{{#ifexpr:@>123|aa@|bb}}
    • 获得方式:<esc>{{#ifexpr:@>123|aa@|bb}}</esc> → \{\{#ifexpr:@\g123\!aa@\!bb\}\}
    • bwiki需要手动转义(这是一个bug特性)。对于其他平台,应当能直接用esc标签包裹wikitext作为参数。
  • {{#listmap:list=1,1,10,100,1000,1000|token=@|pattern=\{\{#ifexpr:@>99\!aa@\!bb\}\}|duplicates=poststrip}} → bb, bb, aa100, aa1000
    • 结果有两个bb是正常的,因为去重是针对pattern表达式去重,list中1和10的pattern是不同的,最终pattern的展开结果相同


listmerge

【疑存BUG】以指定规则合并列表元素。出自扩展 ParserPower

列表中的所有元素将依次两两匹配,符合规则的元素将按照指定格式合并。

语法

{{#listmerge:
  |list=
  |insep=
  |outsep=
  |token1=
  |token2=
  |tokensep=
  |fieldsep=
  |matchpattern=
  |mergepattern=
  |matchtemplate=
  |mergetemplate=
  |sortmode=
  |sortoptions=
  |counttoken=
  |intro=
  |outro=
  |default=
}}

核心参数:

  • list: 列表。如item 1,item 2,item 3
  • insep: 可选,输入分隔符,默认逗号,。用于分割参数list,构建列表

输出格式控制,可选:

  • outsep: 输出分隔符,默认逗号。用作输出时列表项的分隔符。
  • intro, outro: 输出时指定前置和后置内容,列表为空时不输出。用于避免在列表前后使用if来控制前后内容。
    • counttoken: 占位符,用于在intro, outro参数中填充列表项数量
  • default: 过滤后列表如果为空时的输出。

合并规则参数:

  • token1, token2, matchpattern 和 mergepattern: token1/2是列表项占位符,用在后两个pattern中,如果matchpattern的解析结果是yes,这两个列表项将被mergepattern替代
    • tokensep, fieldsep: fieldsep是用于列表项的分隔符,此时token可指定多个占位符(默认分隔符是逗号,也可通过tokensep指定),pattern能单独针对列表项的一部分做格式控制
  • matchtemplate, mergetemplate: 使用模板来作为匹配和合并逻辑,列表项最为参数1和2传入。当matchtemplate的解析结果是yes时,使用mergetemplate合并元素
    • fieldsep: 列表项分隔符,将每个列表项分割为多个参数传入模板

排序参数,可选:

  • sortmode: 排序时机。值为以下选项之一:
    • nosort 不排序
    • presort 先排序,再处理列表项。
    • sort 或 postsort 先按处理列表项,后排序
    • pre/postsort 先排序,再处理列表项,再次排序
  • sortoptions: 排序方式,值为以下的一个或多个选项:
    • alpha 或 numeric: 按字母或数字排序,默认字母
    • asc 或 desc: 升序和降序排序
    • ncs 或 cs: 不区分大小写(ncs),或区分(cs),仅对alpha排序生效,默认不区分大小写
  • duplicates: 重复值处理,值为以下选项之一:
    • keep 保留重复值
    • prestrip 在处理前移除重复值
    • strip 或 poststrip 在处理后移除重复值。注意,此时wikitext尚未被解析,因此即使指定此选项,获得的结果仍然可能有重复项。
    • pre/poststrip 在处理前、后均移除一次重复值(目前由于扩展本身的bug,此选项仅能在格式化前执行一次)

示例

  • 疑似bug,暂无
  • {{#listmerge:list=Apple,Orange,Banana|token1=a|token2=b|matchpattern=yes|mergepattern=a+b}}+ (应为Apple+Orange+Banana


listsort

列表排序。出自扩展 ParserPower

按字母、数字顺序排序、支持区分大小写和升降序。

语法

{{#listsort:
  |list=
  |insep=
  |outsep=
  |sortoptions=
  |duplicates=
  |token=
  |tokensep=
  |fieldsep=
  |indextoken=
  |pattern=
  |template=
  |subsort=
  |subsortoptions=
  |counttoken=
  |intro=
  |outro=
  |default=
}}

核心参数:

  • list: 列表。如item 1,item 2,item 3
  • insep: 可选,输入分隔符,默认逗号,。用于分割参数list,构建列表

输出格式控制,可选:

  • outsep: 输出分隔符,默认逗号。用作输出时列表项的分隔符。
  • intro, outro: 输出时指定前置和后置内容,列表为空时不输出。用于避免在列表前后使用if来控制前后内容。
    • counttoken: 占位符,用于在intro, outro参数中填充过滤后的列表项数量
  • default: 过滤后列表如果为空时的输出。

列表项格式参数,可选:

  • token, pattern: token作为占位符,pattern是带有占位符的wikitext,其解析结果将作为排序键
    • indextoken: pattern中的token将被替换为(列表项的)序号而不是值
  • tokensep, fieldsep: fieldsep是用于列表项的分隔符,此时token可指定多个占位符(默认分隔符是逗号,也可通过tokensep指定),pattern能单独针对列表项的一部分做格式控制
  • template: 通过模板处理列表项,每个列表项被作为参数1传入模板。使用参数会忽略token、tokensep和pattern
    • fieldsep: 列表项分隔符,将每个列表项分割为多个参数传入模板

排序参数,可选:

  • sortoptions: 排序方式,值为以下的一个或多个选项:
    • alpha 或 numeric: 按字母或数字排序,默认字母
    • asc 或 desc: 升序和降序排序
    • ncs 或 cs: 不区分大小写(ncs),或区分(cs),仅对alpha排序生效,默认不区分大小写
  • duplicates: 重复值处理,值为以下选项之一:
    • keep 保留重复值,默认
    • strip 移除重复值
  • subsort和subsortoptions: 对相同元素,当subsort设为yes时,按照subsortoptions选项排序(可用选项与sortoptions相同)

示例

  • {{#listsort:list=Apple,Orange,Banana,Banana|sortoptions=@|duplicates=strip}} → Apple, Banana, Orange


listunique

列表去重。出自扩展 ParserPower

支持按照指定wikitext操作列表项作为对比键。

语法

{{#listunique:
  |list=
  |insep=
  |outsep=
  |uniquecs=
  |token=
  |tokensep=
  |fieldsep=
  |indextoken=
  |pattern=
  |template=
  |counttoken=
  |intro=
  |outro=
  |default=
}}

核心参数:

  • list: 列表。如item 1,item 2,item 3
  • insep: 可选,输入分隔符,默认逗号,。用于分割参数list,构建列表

输出格式控制,可选:

  • outsep: 输出分隔符,默认逗号。用作输出时列表项的分隔符。
  • intro, outro: 输出时指定前置和后置内容,列表为空时不输出。用于避免在列表前后使用if来控制前后内容。
    • counttoken: 占位符,用于在intro, outro参数中填充过滤后的列表项数量
  • default: 过滤后列表如果为空时的输出。

去重参数,可选:

  • uniquecs: 设为yes时,区分大小写
  • token, pattern: token作为占位符,pattern是格式wikitext,每个列表项都将被代入pattern中占位符的位置,展开后作为去重键
    • indextoken: pattern中的token将被替换为(列表项的)序号而不是值
  • tokensep, fieldsep: fieldsep是用于列表项的分隔符,此时token可指定多个占位符(默认分隔符是逗号,也可通过tokensep指定),pattern能单独针对列表项的一部分处理
  • template: 通过模板处理列表项,每个列表项被作为参数1传入模板。使用参数会忽略token、tokensep和pattern
    • fieldsep: 列表项分隔符,将每个列表项分割为多个参数传入模板

示例

  • {{#listunique:list=Apple,Apple,Orange,Banana,Orange,Banana}} → Apple, Orange, Banana


localurl

获取相对URL。MediaWiki原生支持。

指定页面获取其相对URL(不带域名),支持附加查询参数,自动进行URL编码。

语法

{{localurl: 页面 | 参数 }}

  • 页面:要生成URL的目标页面标题
  • 参数(可选):以key=value格式附加的查询字符串参数,多个参数用&分隔

生成的URL始终采用与当前wiki配置匹配的短URL格式(如/wiki/页面名)或index.php路径。

示例

  • 基础用法 {{localurl: 帮助:解析函数 }}/tools/%E5%B8%AE%E5%8A%A9:%E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0
  • 基础用法 {{localurl: Test }}/tools/Test
  • 单个参数 {{localurl: Test | printable=yes }}/tools/index.php?title=Test&printable=yes
  • 多个参数 {{localurl: Test | action=raw&feed=atom }}/tools/index.php?title=Test&action=raw&feed=atom


localurle

获取相对URL,在localurl基础上将&等符号转换为HTML实体。MediaWiki原生支持。

指定页面获取其相对URL(不带域名),支持附加查询参数,自动进行URL编码,还会将这些字符转换为HTML实体:<>"&&lt;&gt;&quot;&amp;

语法

{{localurle: 页面 | 参数 }}

  • 页面:要生成URL的目标页面标题
  • 参数(可选):以key=value格式附加的查询字符串参数,多个参数用&分隔

生成的URL始终采用与当前wiki配置匹配的短URL格式(如/wiki/页面名)或index.php路径。

示例

  • 基础用法 {{localurle: 帮助:解析函数 }}/tools/%E5%B8%AE%E5%8A%A9:%E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0
  • 基础用法 {{localurle: Test }}/tools/Test
  • 单个参数 {{localurle: Test | printable=yes }}/tools/index.php?title=Test&amp;printable=yes
  • 多个参数 {{localurle: Test | action=raw&feed=atom }}/tools/index.php?title=Test&amp;action=raw&amp;feed=atom


loop

循环函数。出自扩展 Loops

重复解析一段wikitext。需要指定循环次数和循环变量。循环变量每次加一,如果循环次数为负数,则变量每次减一。

语法

{{#loop: 变量名 | 起始值 | 循环次数 | 循环内容 }}

  • 变量名(必填):存储当前循环次数的变量名称,可通过访问
  • 起始值(必填):循环计数器初始值,接受整数值
  • 循环次数(必填):绝对值决定循环次数,正负决定递增/递减方向
  • 循环内容(必填):每次循环解析的wikitext内容

循环次数为0时不执行任何操作,负数时执行反向计数。实际循环次数取绝对值,例如"-4"同样执行4次循环。

示例

{{#loop: a | 1 | 4 | {{#var:a}} }} → 1234

{{#loop: j | 7 | -4 | {{#var:j}} }} → 7654

{{#loop: i | 2 | 4 |<nowiki/>
*{{#var:i}}
}}

  • 2
  • 3
  • 4
  • 5


lst

嵌入指定页面中被section标签标记的部分。出自扩展 Labeled Section Transclusion

注意,只有直接写在wikitext中的section标签才是有效的,通过模板或#tag引入的section标签无效。

语法

{{#lst: 页面 | section名称 }}

  • 页面:来源页面
  • section名称:指定要嵌入的section

示例

首先标记一段wikitext:

我以前和你一样是个冒险家,直到我的膝盖中了一箭……

其wikitext是:

<section begin="lst示例" />
<code>我以前和你一样是个冒险家,直到我的膝盖中了一箭……</code>
<section end="lst示例" />

一个section需要标记开始和结束位置,一个页面内可以有多个section。这些标记不是HTML/XML,不会干扰其他HTML或标签。


即可在任何页面使用#lst嵌入:{{#lst:帮助:解析函数/lst|lst示例}} 检查到模板循环:帮助:解析函数/lst


lsth

以标题为单位,嵌入指定页面中的wikitext。出自扩展 Labeled Section Transclusion

语法

{{#lsth: 页面 | 标题}}

  • 页面:来源页面
  • 标题:要嵌入内容的标题

嵌入来源页面中指定标题下的内容,即从指定标题开始(不包含标题) ,直到下一个同级标题前。

{{#lsth: 页面 | 标题1 | 标题2 }}

  • 页面:来源页面
  • 标题1:要嵌入内容的标题,开始位置
  • 标题2:要嵌入内容的标题,结束位置

嵌入来源页面中从标题1开始到标题2之间的内容,不包含标题12。

{{#lsth: 页面}}

  • 页面:来源页面

嵌入页面中首个标题之前的内容

示例

  • {{#lsth:Wiki简介|获取帮助}}


lstx

嵌入整个页面,除了指定排除的section。出自扩展 Labeled Section Transclusion

#lst相反,lstx会嵌入全部指定页面内容,除了指定的section。

语法

{{#lstx: 页面 | 排除section | 替代文字 }}

  • 页面:来源页面
  • 排除section:要排除的section名称,这是通过标签section指定的,与lst的要求一致
  • 替代文字:在排除section的位置展示的内容

示例

  • {{#lstx:帮助:解析函数/lst|lst示例}}


lstapp

向列表追加项。出自扩展 ParserPower

也会移除列表中每个元素的前后空格,移除空值

语法

{{#lstapp:list|separator|new item}} 核心参数:

  • list: 列表。如item 1,item 2,item 3
  • separator: 列表分隔符
  • new item: 新元素

示例

  • {{#lstapp:Apple,Orange|,|Banana}} → Apple,Orange,Banana
  • {{#lstapp: Apple , , , Orange |,|Banana}} → Apple,Orange,Banana


lstcnt

计算列表元素数量。出自扩展 ParserPower

语法

{{#lstcnt:list|separator}} 核心参数:

  • list: 列表。如item 1,item 2,item 3
  • separator: 列表分隔符

示例

  • {{#lstcnt:Apple,Orange,Banana|,}} → 3
  • {{#lstcnt:Apple,Orange,Banana,Banana|a}} → 7


lstcntuniq

计算列表中不重复的元素数量。出自扩展 ParserPower

语法

{{#lstcntuniq:list|separator|case sensitivity option}} 核心参数:

  • list: 列表。如item 1,item 2,item 3
  • separator: 列表分隔符
  • case sensitivity option: ncs(不区分大小写,默认)或 cs(区分大小写)

示例

  • {{#lstcntuniq:Apple,Banana,Banana|,}} → 2
  • {{#lstcntuniq:Apple,Banana,Banana,Banana|a}} → 3


lstelem

按位置获取列表元素。出自扩展 ParserPower

语法

{{#lstelem:list|separator|index}} 核心参数:

  • list: 列表。如item 1,item 2,item 3
  • separator: 列表分隔符
  • index: 元素位置,支持负数(从后向前的位置)

示例

  • {{#lstelem:Apple,Orange|,|1}} → Apple
  • {{#lstelem:Apple,Orange|,|-1}} → Orange
  • {{#lstelem:Apple,Orange|,|-2}} → Apple


lstfltr

列表过滤,返回包含指定元素的列表。出自扩展 ParserPower

语法

{{#lstfltr:items to keep|items separator|list|input separator|output separator|case sensitivity option}} 核心参数:

  • items to keep:要保留的元素
    • items separator:保留元素的分隔符
  • list: 列表。如item 1,item 2,item 3
  • input separator: 列表分隔符
  • output separator: 输出分隔符
  • case sensitivity option: ncs(不区分大小写,默认)或 cs(区分大小写)

示例

  • {{#lstfltr:Apple,Banana|,|Apple,Apple,Banana,Orange,Banana|,}} → Apple, Apple, Banana, Banana


lstfnd

寻找列表中第一个匹配的元素。出自扩展 ParserPower

语法

{{#lstfnd:item to find|list|separator|case sensitivity option}} 核心参数:

  • item to find:要匹配的元素
  • list: 列表。如item 1,item 2,item 3
  • separator: 列表分隔符
  • case sensitivity option: ncs(不区分大小写,默认)或 cs(区分大小写)

示例

  • {{#lstfnd:banana|Apple,Apple,Banana,Orange,Banana|,}} → Banana
  • {{#lstfnd:{{#ifeq:arg-a|arg-b|apple|banana}}|Apple,Apple,Banana,Orange,Banana|,}} → Banana


lstind

获取列表中第一个匹配的元素的位置。出自扩展 ParserPower

语法

{{#lstind:item to find|list|separator|options}} 核心参数:

  • item to find:要匹配的元素
  • list: 列表。如item 1,item 2,item 3
  • separator: 列表分隔符
  • options: 以下值中的一个或多个:
    • asc / desc:asc(默认,从前向后搜索),desc(从后向前搜索)
    • pos / neg :pos(默认,获取正向位置),neg(获取负向位置,即负数的从后向前的位置)

示例

  • {{#lstind:Banana|Apple,Banana,Orange,Banana|,}} → 2
  • {{#lstind:Banana|Apple,Banana,Orange,Banana|,|neg}} → -3
  • {{#lstind:Banana|Apple,Banana,Orange,Banana|,|desc}} → 4


lstjoin

合并两个列表,支持指定分隔符。出自扩展 ParserPower

语法

{{#lstjoin:first list|first input separator|second list|second input separator|output separator}} 核心参数:

  • first list: 列表1。如item 1,item 2,item 3
  • first list separator: 列表1分隔符
  • second list: 列表2。如item 1,item 2,item 3
  • second list separator: 列表2分隔符
  • output separator: 输出分隔符,默认没有

示例

  • {{#lstjoin:Apple,Banana|,|Orange+Banana|+}} → AppleBananaOrangeBanana
  • {{#lstjoin:Apple,Banana|,|Orange+Banana|+|、}} → Apple、Banana、Orange、Banana


lstmap

列表排序、格式化输出,是listmap的简化。出自扩展 ParserPower

语法

{{#lstmap:list|input separator|token|pattern|output separator|sort mode|sort options}}

参数:

  • list: 列表。如item 1,item 2,item 3
  • input separator: 输入分隔符,默认逗号,。用于分割参数list,构建列表
  • token, pattern: token作为占位符,pattern是格式wikitext,每个列表项都将被代入pattern中占位符的位置输出
  • output separator: 输出分隔符,默认逗号。用作输出时列表项的分隔符。
  • sortmode: 排序时机。值为以下选项之一:
    • nosort 不排序
    • presort 先排序,再格式化列表项。如果格式化不影响排序,使用此选项效率更高。
    • sort 或 postsort 先按格式化列表项,后排序
  • sortoptions: 排序方式,值为以下的一个或多个选项:
    • alpha 或 numeric: 按字母或数字排序,默认字母
    • asc 或 desc: 升序和降序排序
    • ncs 或 cs: 不区分大小写(ncs),或区分(cs),仅对alpha排序生效,默认不区分大小写

示例


lstmaptemp

【疑存Bug】列表排序、格式化输出,是#listmap的简化,仅支持通过模板格式化输出。出自扩展 ParserPower

无法复现示例

语法

{{#lstmaptemp:list|template|input separator|output separator|sort mode|sort options}}

参数:

  • list: 列表。如item 1,item 2,item 3
  • template: 模板名,与 #listmap 的 template 参数一致,其输入是一个列表元素。
  • input separator: 输入分隔符,默认逗号,。用于分割参数list,构建列表
  • output separator: 输出分隔符,默认逗号。用作输出时列表项的分隔符。
  • sort mode: 排序时机。值为以下选项之一:
    • nosort 不排序
    • presort 先排序,再格式化列表项。如果格式化不影响排序,使用此选项效率更高。
    • sort 或 postsort 先按格式化列表项,后排序
  • sort options: 排序方式,值为以下的一个或多个选项:
    • alpha 或 numeric: 按字母或数字排序,默认字母
    • asc 或 desc: 升序和降序排序
    • ncs 或 cs: 不区分大小写(ncs),或区分(cs),仅对alpha排序生效,默认不区分大小写

示例

  • 无法成功复现示例
  • {{#lstmaptemp:Apple,Orange,Banana|模板名|,|,}}


lstprep

向列表前添加元素。出自扩展 ParserPower

也会移除列表中每个元素的前后空格,移除空值。

语法

{{#lstprep:new item|separator|list}} 核心参数:

  • new item: 新元素
  • separator: 列表分隔符
  • list: 列表。如item 1,item 2,item 3

示例

  • {{#lstprep:Banana|,|Apple,Orange}} → Banana,Apple,Orange
  • {{#lstprep:Banana|,|Apple , , , Orange}} → Banana,Apple,Orange


lstrm

从列表移除某一指定元素。出自扩展 ParserPower

语法

{{#lstrm:item to remove|list|input separator|output separator|case sensitivity option}}

核心参数:

  • item to remove: 要移除的一个元素
  • list: 列表。如item 1,item 2,item 3
  • input separator: 输入分隔符
  • output separator: 输出分隔符
  • case sensitivity option: ncs(不区分大小写,默认)或 cs(区分大小写)

示例

  • {{#lstrm:Banana|Apple,Banana,Orange,Banana|,}} → Apple, Orange


lstsep

列表更换分隔符。出自扩展 ParserPower

同时会移除空白元素,移除元素前后的空格。

语法

{{#lstsep:list|input separator|output separator}}

  • list: 列表。如item 1,item 2,item 3
  • input separator: 输入分隔符
  • output separator: 输出分隔符

示例

  • {{#lstsep:Apple,Banana,Orange,Banana|,|/}} → Apple/Banana/Orange/Banana
  • {{#lstsep:Apple , , , Banana ,|,|+}} → Apple+Banana
  • {{#lstsep:baaabaabab|a|+}} → b+b+b+b


lstsrt

列表排序,是#listsort的简版。出自扩展 ParserPower

按字母、数字顺序排序、支持区分大小写和升降序。

语法

{{#lstsrt:list|input separator|output separator|sort options}}

  • list: 列表。如item 1,item 2,item 3
  • input separator: 输入分隔符
  • output separator: 输出分隔符
  • sortoptions: 排序方式,值为以下的一个或多个选项:
    • alpha 或 numeric: 按字母或数字排序,默认字母
    • asc 或 desc: 升序和降序排序
    • ncs 或 cs: 不区分大小写(ncs),或区分(cs),仅对alpha排序生效,默认不区分大小写

示例

  • {{#lstsrt:Apple,Orange,Banana,Banana|,|,}} → Apple,Banana,Banana,Orange


lstsub

获取列表的一部分。出自扩展 ParserPower

语法

{{#lstsub:list|input separator|output separator|start index|length}}

  • list: 列表。如item 1,item 2,item 3
  • input separator: 输入分隔符
  • output separator: 输出分隔符
  • start index: 起始位置
  • length: 截取长度

示例

  • {{#lstsub:Apple,Orange,Banana,Banana|,|,|2|1}} → Orange
  • {{#lstsub:Apple,Orange,Banana,Banana|,|+|2|2}} → Orange+Banana


lstuniq

列表去重。出自扩展 ParserPower

语法

{{#lstuniq:list|input separator|output separator|case sensitivity option}}

  • list: 列表。如item 1,item 2,item 3
  • input separator: 输入分隔符
  • output separator: 输出分隔符
  • case sensitivity option: 是否区分大小写。ncs(默认,不区分),cs(区分大小写)

示例

  • {{#lstuniq:Apple,Orange,Banana,banana|,|,}} → Apple,Orange,Banana
  • {{#lstuniq:Apple,Orange,banana,Banana|,|,}} → Apple,Orange,banana
  • {{#lstuniq:Apple,Orange,Banana,banana|,|+|cs}} → Apple+Orange+Banana+banana


N

NAMESPACE

获取命名空间名称。MediaWiki原生支持。

获取当前页面,或者指定页面的命名空间名称。

语法

{{NAMESPACE}} 获取当前命名空间。

{{NAMESPACE:页面名称}}

  • 页面名称: 要获取命名空间名称的页面

示例

  • {{NAMESPACE}} → 帮助
  • {{NAMESPACE:模板:2333}} → 模板
  • {{NAMESPACE:{{FULLPAGENAME}}}} → 帮助


NAMESPACEE

获取命名空间名称,以URL编码。MediaWiki原生支持。

获取URL编码的当前页面,或者指定页面的命名空间名称,名称以URL编码。

语法

{{NAMESPACEE}} 获取当前命名空间。

{{NAMESPACEE:页面名称}}

  • 页面名称: 要获取命名空间名称的页面

示例

  • {{NAMESPACEE}} → %E5%B8%AE%E5%8A%A9 (「帮助」的URL编码)
  • {{NAMESPACEE:模板:2333}} → %E6%A8%A1%E6%9D%BF (「模板」的URL编码)
  • {{NAMESPACEE:{{FULLPAGENAME}}}} → %E5%B8%AE%E5%8A%A9 (「帮助」的URL编码)


NAMESPACENUMBER

获取命名空间名称ID。MediaWiki原生支持。

获取当前页面或指定页面的命名空间ID,如主空间为0,模板为10等等。

语法

{{NAMESPACENUMBER}} 获取当前命名空间ID。

{{NAMESPACENUMBER:页面名称}}

  • 页面名称: 要获取命名空间ID的页面

示例

  • {{NAMESPACENUMBER}} → 12(帮助)
  • {{NAMESPACENUMBER:首页}} → 0(主命名空间ID为0)
  • {{NAMESPACENUMBER:模板:2333}} → 10(模板)
  • {{NAMESPACENUMBER:{{FULLPAGENAME}}}} → 12(帮助)


ns

获取命名空间名称,根据ID或英文名。MediaWiki原生支持。

语法

{{ns:参数1}}

  • 参数1:命名空间ID、英文名或中文名

示例

  • {{ns:-2}} / {{ns:Media}}媒体文件
  • {{ns:-1}} / {{ns:Special}}特殊
  • {{ns:0}} / {{ns:}}
  • {{ns:2}} / {{ns:User}}用户
  • {{ns:4}} / {{ns:Project}}WIKI实验室 (取决于Wiki名称)
  • {{ns:6}} / {{ns:File}} / {{ns:Image}}文件
  • {{ns:8}} / {{ns:MediaWiki}}MediaWiki
  • {{ns:10}} / {{ns:Template}}模板
  • {{ns:12}} / {{ns:Help}}帮助
  • {{ns:14}} / {{ns:Category}}分类
  • {{ns:274}}Widget
  • {{ns:828}}模块

此外,中文名也可:

  • {{ns:模板}} → 模板

支持讨论命名空间:

  • {{ns:1}} / {{ns:Talk}} → 讨论
  • {{ns:3}} / {{ns:User talk}} → 用户讨论
  • {{ns:5}} / {{ns:Project talk}} → WIKI实验室讨论(取决于Wiki名称)
  • {{ns:7}} / {{ns:File talk}} / {{ns:Image talk}} → 文件讨论
  • {{ns:9}} / {{ns:MediaWiki talk}} → MediaWiki讨论
  • {{ns:11}} / {{ns:Template talk}} → 模板讨论
  • {{ns:13}} / {{ns:Help talk}} → 帮助讨论
  • {{ns:15}} / {{ns:Category talk}} → 分类讨论


nse

获取URL编码的命名空间名称,根据ID或英文名。MediaWiki原生支持。

与ns一致,但结果以URL编码。

语法

{{nse:参数1}}

  • 参数1:命名空间ID、英文名或中文名

示例

  • {{nse:-2}} / {{nse:Media}}%E5%AA%92%E4%BD%93%E6%96%87%E4%BB%B6
  • {{nse:-1}} / {{nse:Special}}%E7%89%B9%E6%AE%8A
  • {{nse:0}} / {{nse:}}
  • {{nse:6}} / {{nse:File}} / {{nse:Image}}%E6%96%87%E4%BB%B6
  • {{nse:8}} / {{nse:MediaWiki}}MediaWiki

此外,中文名也可:

  • {{nse:模板}} → %E6%A8%A1%E6%9D%BF

支持讨论命名空间:

  • {{nse:1}} / {{nse:Talk}} → %E8%AE%A8%E8%AE%BA
  • {{nse:3}} / {{nse:User talk}} → %E7%94%A8%E6%88%B7%E8%AE%A8%E8%AE%BA


NUMBERINGROUP

获取指定用户组的用户数量。MediaWiki原生支持。

语法

{{NUMBERINGROUP:用户组ID}}

  • 用户组ID: 以下值中的一个,参见特殊:用户组权限
    • autoconfirmed : 自动确认用户
    • automoderated : 自动版主化用户
    • bilibili : bilibili用户
    • bot : 机器人
    • bureaucrat : 行政员
    • checkuser : checkuser
    • interface-admin : 界面管理员
    • moderator : 版主
    • push-subscription-manager : 推送订阅管理器
    • smwadministrator : 管理员(语义MediaWiki)
    • smwcurator : 监护人(语义MediaWiki)
    • smweditor : 编辑(语义MediaWiki)
    • suppress : 监督员
    • sysop : 管理员
    • user : 用户
    • widgeteditor : 小部件编辑者
注意,此函数中使用参数bilibili可能会导致性能问题,可以使用{{NUMBEROFUSERS}}替代。
不过,bilibili用户组的成员数量不等于wiki用户数量。因为只有≥2级的B站用户登录wiki时才自动授予bilibili用户组。因此拥有bilibili用户组的用户数量通常略低于wiki用户数量。

示例

  • {{NUMBERINGROUP:automoderated}} → 15
  • {{NUMBERINGROUP:bot}} → 1
  • {{NUMBERINGROUP:bureaucrat}} → 8
  • {{NUMBERINGROUP:interface-admin}} → 22
  • {{NUMBERINGROUP:sysop}} → 19


NUMBEROFACTIVEUSERS

活跃用户数量。MediaWiki原生支持。

过去30天内执行过操作(如编辑页面)的用户被视为活跃用户。此变量与特殊:统计信息中的活跃用户数量统计保持一致。

语法

{{NUMBEROFACTIVEUSERS}}

示例

{{NUMBEROFACTIVEUSERS}} → 12


NUMBEROFADMINS

管理员数量。MediaWiki原生支持。

拥有管理员用户组的用户数量。此信息也在特殊:统计信息 - 用户统计中显示。

语法

{{NUMBEROFADMINS}}

示例

{{NUMBEROFADMINS}} → 19


NUMBEROFARTICLES

有效内容页面的数量。MediaWiki原生支持。

有效内容页面:主命名空间中带有链接的非重定向页面。

此信息也在特殊:统计信息 - 页面统计中显示。

在MW 1.17 及更早版本中,还需要带有至少一个逗号。

语法

{{NUMBEROFARTICLES}}

示例

{{NUMBEROFARTICLES}} → 176


NUMBEROFEDITS

总编辑次数。MediaWiki原生支持。

此信息也在特殊:统计信息 - 编辑统计中显示。

语法

{{NUMBEROFEDITS}}

示例

{{NUMBEROFEDITS}} → 19,415


NUMBEROFFILES

文件数量。MediaWiki原生支持。


此信息也在特殊:统计信息 - 页面统计中显示。

在BWiki,此统计约等于图片数量。目前上传文件仅限图片,较老的wiki可能会存在非图片文件。

语法

{{NUMBEROFFILES}}

示例

{{NUMBEROFFILES}} → 205


NUMBEROFPAGES

页面数量。MediaWiki原生支持。

Wiki中所有命名空间的总页面数量,包括讨论、重定向、图片页面等等。此信息也在特殊:统计信息 - 页面统计中显示。

语法

{{NUMBEROFPAGES}}

示例

{{NUMBEROFPAGES}} → 1,480


NUMBEROFPAGEVIEWS

【已弃用MediaWiki版本: 1.14 - 1.24 可用。MediaWiki原生支持。

原用于显示页面浏览次数。但由于BWiki额外的CDN和缓存层,大部分访问不会纳入此统计,所以此变量通常低于实际浏览量,没有参考价值。

相应的,特殊:统计信息中的「最多查看页面」数据也不准确。

语法

{{NUMBEROFPAGEVIEWS}}

示例

{{NUMBEROFPAGEVIEWS}} → 1,263


NUMBEROFUSERS

注册用户数量。MediaWiki原生支持。

此信息也在特殊:统计信息 - 用户统计中显示。

登录B站的用户首次访问某一个BWiki站点时,会自动创建账号和登录(每个BWiki站点的用户和权限都是独立控制的)。所以此变量等价于访问过某一Wiki的B站用户数。

语法

{{NUMBEROFUSERS}}

示例

  • {{NUMBEROFUSERS}} → 9,959,097
  • {{NUMBEROFUSERS:R}} → 9959097


NUMBEROFVIEWS

【已弃用MediaWiki Version: 1.14 – 1.24。MediaWiki原生支持。

原用于获取站点浏览量。但由于BWiki额外的CDN和缓存层,大部分访问不会纳入此统计,所以此变量通常低于实际浏览量,没有参考价值。

此信息也在特殊:统计信息 - 查看统计中显示,同样会低于实际浏览量。

语法

{{NUMBEROFVIEWS}}

示例

{{NUMBEROFVIEWS}} → 3,558,458


O

or

返回两个参数中首个非空值。出自扩展 ParserPower

2020年5月10日后的版本中,支持任意多个参数(目前BWiki部署的版本仅支持两个参数)

语法

{{#or: 参数1 | 参数2}}

示例

  • {{#or: a | b }}a
  • {{#or: | b }}b
  • {{#or: {{{1|}}}| {{{2|默认值}}} }}默认值 (等价于{{{1|{{{2|默认}}}}}}
  • {{#vardefine:a}}{{#vardefine:b|2333}}{{#or: {{#var:a}} | {{#var:b}} }}2333


P

padleft

从左侧填充字符串。MediaWiki原生支持。

将指定字符串填充到原字符串的左侧,直到达到要求的长度。支持多字节字符(如中文)并确保安全处理Unicode。

也可用于从左侧截取字符串,或重复指定文本

语法

{{padleft: 原字符串 | 目标长度 | 填充字符串 }}

  • 原字符串:需要被填充的字符串
  • 目标长度:填充后的总字符数(最大500)
  • 填充字符串(可选):用于填充的字符串,默认为"0"

填充时会循环使用填充字符串直到达到目标长度。如果原字符串已长于目标长度,则不做任何处理。

示例

  • 默认填0 {{padleft: xyz | 5 }} → 00xyz
  • 中文填充 {{padleft: 啊哈 | 5 | 填充 }} → 填充填啊哈
  • 超长原文 {{padleft: 这个字符串太长了 | 5 | 填 }} → 这个字符串太长了
  • 截断填充 {{padleft: | 3 | abcde }} → abc
  • 重复输出 {{padleft: | {{#expr:{{#len: abc }} * 3 }} | abc }} → abcabcabc


padright

从右侧填充字符串。MediaWiki原生支持。

将指定字符串填充到原字符串的右侧,直到达到要求的长度。支持多字节字符(如中文)并确保安全处理Unicode。

也可用于从右侧截取字符串,或重复指定文本。

与padright相同,只是填充方向相反,当原字符串为空时,这两个函数的行为一致。

语法

{{padright: 原字符串 | 目标长度 | 填充字符串 }}

  • 原字符串:需要被填充的字符串
  • 目标长度:填充后的总字符数(最大500)
  • 填充字符串(可选):用于填充的字符串,默认为"0"

填充时会循环使用填充字符串直到达到目标长度。如果原字符串已长于目标长度,则不做任何处理。

示例

  • 默认填0 {{padright: xyz | 5 }} → xyz00
  • 中文填充 {{padright: 啊哈 | 5 | 填充 }} → 啊哈填充填
  • 超长原文 {{padright: 这个字符串太长了 | 5 | 填 }} → 这个字符串太长了
  • 截断填充 {{padright: | 3 | abcde }} → abc
  • 重复输出 {{padright: | {{#expr:{{#len: abc }} * 3 }} | abc }} → abcabcabc


PAGEID

获取页面ID。MediaWiki原生支持。

页面ID是一个数字,是页面的唯一标识符。

语法

  • {{PAGEID}}
    • 获取当前页面ID
  • {{PAGEID:页面名称}}
    • 获取指定页面ID

示例

  • {{PAGEID}} → 2216
  • {{PAGEID:首页}} → 1
  • {{PAGEID:帮助:解析函数}} → 2216
  • {{PAGEID:特殊:最近更改}} → 0
  • 构造页面链接 https://wiki.biligame.com/tools/?curid={{PAGEID}}https://wiki.biligame.com/tools/?curid=2216
    • 注意,BWiki针对此类URL的缓存约半小时


PAGENAME

获取页面名,不带命名空间。MediaWiki原生支持。

语法

  • {{PAGENAME}}
    • 当前页面名
  • {{PAGENAME: 页面名称}}
    • 获取指定页面名称的页面名

示例

  • {{PAGENAME}} → 解析函数
  • {{PAGENAME:帮助:解析函数}} → 解析函数


PAGENAMEE

获取页面名,以URL编码,不带命名空间。MediaWiki原生支持。

语法

  • {{PAGENAMEE}}
    • 当前页面名
  • {{PAGENAMEE: 页面名称}}
    • 获取指定页面名称的页面名

示例

  • {{PAGENAMEE}} → %E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0 (解析函数)
  • {{PAGENAMEE:帮助:解析函数}} → %E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0 (解析函数)


PAGESINCATEGORY

【高开销】指定分类的页面数量。MediaWiki原生支持。

语法

{{PAGESINCATEGORY: 分类名 | 选项 }}

  • 分类名:获取此分类的页面数量
  • 选项(可选):以下值中的一个
    • all 默认,分类中的所有页面
    • pages 仅普通页面(不包括子分类和文件)
    • subcats 仅子类别
    • files 仅文件

示例

  • {{PAGESINCATEGORY: 解析函数 }} → 21
  • {{PAGESINCATEGORY: 解析函数 | files }} → 0
  • {{PAGESINCATEGORY: 热力图 | all }} → 2
  • {{PAGESINCATEGORY: 热力图 | all | R }} → 2
  • {{PAGESINCATEGORY: 热力图 | R | all }} → 2


PAGESIZE

获取指定页面的大小。MediaWiki原生支持。

语法

  • {{PAGESIZE: 页面名 }}
    • 页面名:指定一个页面获取其大小(byte size)
  • {{PAGESIZE: 页面名 | R }}
    • 不格式化结果数字(无逗号分隔符)

示例

  • {{PAGESIZE: 帮助:解析函数 }} → 14,024
  • {{PAGESIZE: 帮助:解析函数 | R }} → 14024
  • {{PAGESIZE: 帮助:不存在的页面23333333}} → 0


plural

语言复数判断。MediaWiki原生支持。

根据条件使用指定的单数/复数形式,条件为 1 / -1 时判定为单数。

语法

{{plural: 条件wikitext | 单数文本 | 复数文本 }}

  • 条件wikitext:用于判断单复数的条件wikitext,其结果应为数字
  • 单数文本:条件wikitext的展开结果为为 1 / -1 时,输出的文本
  • 复数文本:非单数情况输出的文本

以上参数描述为默认语言设置。部分语言有更多种复数形式,请参考官方文档和translatewiki.net上的相关文档Plura in MediaWiki

示例

  • {{plural: 1 | is | are }} → is
  • {{plural: -1 | is | are }} → is
  • {{plural: -2 | is | are }} → are
  • {{plural: 0 | is | are }} → are
  • {{plural: 2 | is | are }} → are


pos

字符串搜索。出自扩展 ParserFunctions 的String functions大规模使用时性能低下,推荐使用Lua模块。请参考扩展置顶警告MediaWiki代码库 r51497中的暴论“parsers in the ugliest, most inefficient programming language known to man: MediaWiki wikitext with ParserFunctions.”、“WARNING: enabling this may have an adverse impact on the sanity of your users.”

返回指定字符串首次出现的位置,区分大小写。没有找到结果时返回空字符串。搜索时,无视字符串中的nowiki标签和其他解析器扩展标签。

语法

{{#pos: 字符串 | 搜索目标 | 偏移量 }}

  • 字符串:被搜索的内容,其中的nowiki标签和解析器扩展标签会被无视,即先移除后搜索。
  • 搜索目标:要在字符串中搜索的目标,默认空格
  • 偏移量(可选):指定搜索的起始位置,用于跳过若干字符

示例

  • {{#pos: Wins Come All Day | Come }} → 5
  • {{#pos: Wins Come All Day }} → 4 (查询目标默认为空格)
  • {{#pos: endless wins | e }} → 0
  • {{#pos: endless wins | e | 2 }} → 4
  • {{#pos: <a>赢</a>而不麻 | 麻 }} → 2 (扩展标签及其内容会被忽略)
  • {{#pos: 陈睿吃花椒 | 花椒 }} → 3


PROTECTIONEXPIRY

查询页面的保护到期时间。MediaWiki原生支持。

指定其他页面时,此函数是【高开销】的。

当页面指定保护时间时返回时间,否则未保护的页面和永久保护的页面均返回 infinity。不存在的页面和无效的操作参数返回空字符串。

语法

  • {{PROTECTIONEXPIRY: 操作 }}
    • 操作:要查询的页面操作,如edit、move
  • {{PROTECTIONEXPIRY: 操作 | 页面名 }}
  • 【高开销】操作:页面操作,如edit、edit

示例

  • {{PROTECTIONEXPIRY: edit }}infinity (本页面没有保护)
  • {{PROTECTIONEXPIRY: move }}infinity (本页面没有保护)
  • {{PROTECTIONEXPIRY: edit | 不存在的页面233333 }}
  • {{PROTECTIONEXPIRY: move | 不存在的页面233333 }}
  • {{PROTECTIONEXPIRY: edit | 保护页面示例 }}infinity (本页面无限期保护)
  • {{PROTECTIONEXPIRY: move | 保护页面示例 }}infinity (本页面无限期保护)
  • {{PROTECTIONEXPIRY: edit | 保护页面示例/有期限的 }}20990908160000
  • {{PROTECTIONEXPIRY: move | 保护页面示例/有期限的 }}20990908160000
  • {{PROTECTIONEXPIRY: abcdefg | 保护页面示例 }}


PROTECTIONLEVEL

查询页面保护级别。MediaWiki原生支持。

查询非当前页面时,是【高开销】函数。

语法

  • {{PROTECTIONLEVEL: 操作 }}
    • 操作:如move、edit。查询当前页面的保护级别
  • {{PROTECTIONLEVEL: 操作 | 页面名 }}
    • 页面名:查询指定页面的保护级别【高开销】

返回结果为autoconfirmedsysop或空字符串(未受保护)。超过高开销函数次数限制后,其返回结果是空字符串。

在BWiki中,Lv2以上的B站用户会被自动授予 autoconfirmed 用户组,因此只有“仅允许管理员”的页面保护是有意义的。

示例

  • {{PROTECTIONLEVEL: edit }}
  • {{PROTECTIONLEVEL: move }}
  • {{PROTECTIONLEVEL: edit | 保护页面示例 }} → sysop(这是个被永久保护的页面)
  • {{PROTECTIONLEVEL: move | 保护页面示例 }} → sysop


Q

queryformlink

查询表单入口。提供一个链接,跳转到指定表单的查询页面。出自扩展 Page Forms

s 与{{特殊:执行查询/一个表单名称}}略有不同,queryformlink可以指定更多参数。


请参阅官方文档:Extension:Page Forms/Creating query forms

语法

  • {{#queryformlink:form=查询表单名}}
  • {{#queryformlink:form=|link text=|link type=|query string=|tooltip=|popup}}


R

rel2abs

将相对路径转换为绝对路径。出自扩展 ParserFunctions

语法

{{#rel2abs: 相对路径 }}{{#rel2abs: 相对路径 | 基础路径 }}

  • 相对路径:要转换的路径,支持标准路径语法
  • 基础路径(可选):作为参考的基础路径,默认为当前页面标题

说明

  • 路径语法:
    • . 表示当前路径级别
    • .. 表示上一级路径
    • /foo 表示进入子目录foo

多余的/.会被自动清理。

如果路径尝试访问根目录之上的层级,会返回错误。

函数#iferror可以捕获此函数的错误。

示例

  • {{#rel2abs: /quok | Help:Foo/bar/baz }} → Help:Foo/bar/baz/quok
  • {{#rel2abs: ../quok | Help:Foo/bar/baz }} → Help:Foo/bar/quok
  • {{#rel2abs: ../../quok | Help:Foo/bar/baz }} → Help:Foo/quok
  • {{#rel2abs: ../../../quok | Help:Foo/bar/baz }} → quok
  • {{#rel2abs: ../../../../quok | Help:Foo/bar/baz }}错误:无效路径深度:“Help:Foo/bar/baz/../../../../quok”(尝试访问根节点以上节点)
  • {{#iferror: {{#rel2abs: ../../../../quok | Help:Foo/bar/baz }} | 出错了 | 正常 }} → 出错了


#replace

文本替换。出自扩展 ParserFunctions

语法

{{#replace: 字符串 | 搜索项 | 替换项 | 替换次数 }}

  • 字符串:要进行替换操作的原始文本,区分大小写
  • 搜索项(可选):要查找的文本,默认为空格
  • 替换项(可选):替换后的文本,默认为空字符串(即删除匹配项)
  • 替换次数(可选):最大替换次数,默认为无限制

搜索项和替换项的最大长度受系统配置限制,扩展默认值是1000

参数首尾的空格会被移除,参数中的扩展标签也会被移除。如需在参数首尾使用空格,需要配合<nowiki/>标签使用,如<nowiki/> balabala<nowiki/> <nowiki/>

示例

  • {{#replace:Hello world|world|Wiki}} → Hello Wiki
  • {{#replace:Banana|a|o}} → Bonono
  • {{#replace:No_spaces_here|_|<nowiki> </nowiki>}} → Nospaceshere
  • {{#replace:No_spaces_here|_|<nowiki>-</nowiki>}} → Nospaceshere
  • {{#replace:No_spaces_here|_|<nowiki/> <nowiki/>}} → No spaces here(由于nowiki和其他扩展标签会被移除,只能使用自闭合的nowiki标签防止空格被移除)
  • {{#replace:Remove all spaces}} → Removeallspaces


REVISIONDAY

获取指定页面最后一次修订的日期中的"日"部分(1-31,不带前导零)。出自扩展 ParserFunctions

注意,页面保存后,其缓存时间无上限,不会自动刷新。因此时间相关的函数无法实现如:仅25年9月3日展示的彩蛋内容、计算页面更新距今时长。相关功能使用JS实现更为稳妥。

语法

{{REVISIONDAY}}(当前页面) {{REVISIONDAY:页面名称}}(指定页面,高开销

  • 页面名称(可选):要查询的页面标题,默认为当前页面。不存在的页面返回空字符串

示例

  • {{REVISIONDAY}}5(显示当前页面的最后修订日)
  • {{REVISIONDAY:首页}}24
  • {{REVISIONDAY:模板:面包屑}}29
  • {{REVISIONDAY:不存在的页面}}


REVISIONDAY2

获取指定页面最后一次修订的日期中的"日"部分(01-31,带前导零)。出自扩展 ParserFunctions

注意,页面保存后,其缓存时间无上限,不会自动刷新。因此时间相关的函数无法实现如:仅25年9月3日展示的彩蛋内容、计算页面更新距今时长。相关功能使用JS实现更为稳妥。

语法

{{REVISIONDAY2}}(当前页面)

{{REVISIONDAY2:页面名称}}(指定页面,高开销

  • 页面名称(可选):要查询的页面标题,默认为当前页面。不存在的页面返回空字符串

示例

  • {{REVISIONDAY2}}05(显示当前页面的最后修订日)
  • {{REVISIONDAY2:首页}}24
  • {{REVISIONDAY2:模板:面包屑}}29
  • {{REVISIONDAY2:不存在的页面}}


REVISIONID

获取指定页面的最新修订版本ID。修订ID是MediaWiki为每次编辑分配的唯一数字标识,数值越大代表编辑时间越新。MediaWiki原生支持。

注意,由于wikitext有缓存,本函数的结果会被缓存(暂时保存)。即使其他页面更新(最新修订ID变化),其缓存结果也不会自动刷新。

语法

  • {{REVISIONID}} - 当前页面的修订ID
  • {{REVISIONID:页面名称}} - 指定页面的修订ID(高开销

示例

  • {{REVISIONID}}52134
  • {{REVISIONID:首页}}52495
  • {{REVISIONID:不存在的页面}}


REVISIONMONTH

获取指定页面最新修订版本的月份(带前导零的两位数格式,如06)。MediaWiki原生支持。

注意,由于页面缓存,时间相关的函数无法实现如:仅25年9月3日展示的彩蛋内容、计算页面更新距今时长。相关功能使用JS实现更为稳妥。

语法

  • {{REVISIONMONTH}} 当前页面最新修订日期的月份
  • {{REVISIONMONTH:页面名}} 指定页面最新修订日期的月份(高开销

示例

  • {{REVISIONMONTH}}07
  • {{REVISIONMONTH:首页}}08


REVISIONMONTH1

获取指定页面最新修订版本的月份(没有前导零,如6)。MediaWiki原生支持。

注意,由于页面缓存,时间相关的函数无法实现如:仅25年9月3日展示的彩蛋内容、计算页面更新距今时长。相关功能使用JS实现更为稳妥。

语法

  • {{REVISIONMONTH1}} 当前页面最新修订日期的月份
  • {{REVISIONMONTH1:页面名}} 指定页面最新修订日期的月份(高开销

示例

  • {{REVISIONMONTH1}}7
  • {{REVISIONMONTH1:首页}}8


REVISIONTIMESTAMP

获取指定页面最后一次编辑的时间戳(格式:YYYYMMDDHHMMSS)。时间戳基于本地服务器时间。MediaWiki原生支持。

注意,由于页面缓存,时间相关的函数无法实现如:仅25年9月3日展示的彩蛋内容、计算页面更新距今时长。相关功能使用JS实现更为稳妥。

语法

  • {{REVISIONTIMESTAMP}} 本页编辑时间戳
  • {{REVISIONTIMESTAMP:页面名称}} 指定页面页编辑时间戳(高开销

示例

  • 获取当前页面最后编辑时间:{{REVISIONTIMESTAMP}} → 20250705142649
  • 获取"首页"的最后编辑时间:{{REVISIONTIMESTAMP:首页}} → 20250824164157
  • 无法实现的功能示例:{{#ifexpr: {{REVISIONTIMESTAMP}} < 20230101000000 | 此内容可能已过期 | 内容相对较新 }}
    • 由于页面缓存,当页面在指定日期后仍未刷新缓存,页面可能永远显示“相对较新”


REVISIONUSER

获取指最后修订的用户名(B站用户ID)。MediaWiki原生支持。

因为BWIKI与B站账号互通,首次访问某wiki时,系统会自动在对应wiki创建以bid为用户名的用户,因此对于所有BWIKI上的站点,用户的用户名都是bid。 (需要注意,BWIKI职员/管理账号、导入的编辑可能会出现非bid、非数字的用户名)

语法

  • {{REVISIONUSER}}
  • {{REVISIONUSER:页面名}}高开销
    • 页面名(可选):要查询的页面标题。如果省略,则默认为当前页面。

如果页面不存在或无法访问,将返回空字符串;对于被删除的修订或匿名编辑,可能返回空字符串或IP地址

示例

  • {{REVISIONUSER}} → 39886146
  • {{REVISIONUSER:帮助}} → 返回"帮助"页面的最后编辑者
  • {{REVISIONUSER:不存在的页面}} → (空字符串)


REVISIONYEAR

获取指定页面最近修订年份(4位数字格式)。MediaWiki原生支持。

注意,由于页面缓存,时间相关的函数无法实现如:仅25年9月3日展示的彩蛋内容、计算页面更新距今时长。相关功能使用JS实现更为稳妥。

语法

  • {{REVISIONYEAR}} 当前页面修订年份
  • {{REVISIONYEAR:页面名}} 指定页面,高开销

示例

  • {{REVISIONYEAR}} → 2025
  • {{REVISIONYEAR:首页}} → 2025


rmatch

基于正则表达式匹配文本。出自扩展 RegexFunctions

支持捕获组引用,如果匹配成功 $#\# 包含捕获的文本。如果您想要一个组后跟另一个数字,请使用 ${#}##为数字。

语法

{{#rmatch:string|pattern|then|else}}

  • string(必需):要匹配的文本
  • pattern(必需):正则表达式模式(空格敏感)
  • then(可选):匹配成功时返回的文本,可使用$1\1${1}1引用捕获组
  • else(可选):匹配失败时返回的文本(默认为空)

示例

  • {{#rmatch:Hello|H.*|匹配成功|失败}} → 匹配成功
  • {{#rmatch:ABC123|([A-Z]+)|大写字母:$1}} → 大写字母:ABC
  • {{#rmatch:测试|\\d+|有数字|无数字}} → 无数字


ROOTPAGENAME

获取指定页面的根页面名称(去除命名空间和子页面路径)。MediaWiki原生支持。

语法

{{ROOTPAGENAME:页面名称}} 默认为当前页面

示例

  • {{ROOTPAGENAME}} → 解析函数(当前页面的根名称)
  • {{ROOTPAGENAME:帮助:标题/子页面}} → 标题
  • {{ROOTPAGENAME:帮助:标题/子页面/子页面}} → 标题
  • {{ROOTPAGENAME:分类:示例分类}} → 示例分类


ROOTPAGENAMEE

获取指定页面的根页面名称,并以URL编码。MediaWiki原生支持。

语法

{{ROOTPAGENAMEE:页面名称}} 默认为当前页面

示例

  • {{ROOTPAGENAMEE}}%E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0(解析函数)
  • {{ROOTPAGENAMEE:帮助:标题/子页面}}%E6%A0%87%E9%A2%98(标题)
  • {{ROOTPAGENAMEE:帮助:标题/子页面/子页面}}%E6%A0%87%E9%A2%98(标题)
  • {{ROOTPAGENAMEE:分类:示例分类}}%E7%A4%BA%E4%BE%8B%E5%88%86%E7%B1%BB(示例分类)


rpos

返回字符串中目标子串的最后出现位置。出自扩展 ParserFunctions 的String functions大规模使用时性能低下,推荐使用Lua模块。请参考扩展置顶警告MediaWiki代码库 r51497中的暴论“parsers in the ugliest, most inefficient programming language known to man: MediaWiki wikitext with ParserFunctions.”、“WARNING: enabling this may have an adverse impact on the sanity of your users.”

从0开始计数,未找到时返回-1。

语法

{{#rpos: 字符串 | 搜索目标 }}

  • 字符串:被搜索的文本
  • 搜索目标:要查找的子串(空字符串将自动转换为空格)

特性

  • 从右向左搜索
  • 区分大小写
  • 支持UTF-8多字节字符
  • 对<nowiki>标签等扩展标记按长度0处理
  • 搜索目标长度受$wgStringFunctionsLimitSearch配置限制

示例

  • {{#rpos: 这是长字串 | 字串 }} → 3
  • {{#rpos: 这是长字串长 | 长 }} → 5
  • {{#rpos: Žmržlina | lina }} → 4
  • {{#rpos: <nowiki>test</nowiki> | test }} → -1
  • {{#rpos: 测试文本 | 无匹配 }} → -1


rreplace

基于正则表达式的文本替换。出自扩展 RegexFunctions

语法

{{#rreplace:源字符串|正则表达式|替换文本}}

  • 源字符串:要处理的文本
  • 正则表达式:匹配模式(区分大小写和空格)
  • 替换文本:替换内容,支持捕获组引用(\1${1}

示例

  • {{#rreplace:Hello World|World|Wiki}} → Hello Wiki
  • {{#rreplace:bilibiliBWIKIbilibili|(b{{!}}l)|replacement=<span style="color:red">\1</span>}}bilibiliBWIKIbilibili (把b和l处理成红色标记)
  • {{#rreplace:bilibiliBWIKIbilibili|(KI)|replacement=<span style="color:red">${1}1</span>}} → bilibiliBWIKI1bilibili(把KI替换成了KI1并标红)


rsplit

基于正则表达式分割字符串。出自扩展 RegexFunctions

语法

{{#rsplit:源字符串|正则表达式|片段序号}}

  • 源字符串:待分割的原始字符串
  • 正则表达式:分隔匹配模式(区分大小写和空格)
  • 片段序号(可选):返回的片段索引(负数序号代表反向位置)

示例

  • {{#rsplit:One Two Three Four|\s+}} → One
  • {{#rsplit:One Two Three Four|\s+|1}} → Two
  • {{#rsplit:One Two Three Four|\s+|-1}} → Four


S

seo

设置页面的SEO元数据,包括HTML标题、搜索引擎指令和社交媒体卡片信息。出自扩展 WikiSEO

语法

{{#seo:|可选参数=值|...}}

  • title:设置HTML页面标题,影响搜索引擎结果和社交媒体分享。也会设置meta og:title(<meta property="og:title" content="指定的title"/>
  • title_mode:标题修改模式(replace 替换,默认值;prepend 前置;append 追加)
  • title_separator:标题分隔符(默认"-"),当标题修改模式为前置/追加时,使用的分隔符
  • keywords:页面关键词(逗号分隔)。部分搜索引擎收录页面时会参考。(会向页面添加<meta name="keywords" content="页面关键词"/>
  • description:页面描述。部分搜索引擎收录页面时会参考。(会向页面添加<meta name="description" content="页面描述"/>

OpenGraph相关参数。参阅ogp.me。共享到社交媒体时,提供额外的信息。

  • image:社交媒体卡片图片(og:image),本地文件名或URL。分享时,社媒通常会优先使用此图片展示分享内容
  • image_alt:图片描述(og:image:alt)
  • image_width 和 image_height:图片宽高(og:image:width、og:image:height),以像素为单位。如果设置了image,这两个属性会自动设置
  • type:内容类型(og:type),常见值:website / article / video.movie / music.song / book
    type=article时,支持参数
    • author:作者
    • section:本内容所在章节
    • published_time:发布时间(ISO 8601格式,如2012-01-25)
  • locale:OpenGraph相关参数使用的语言(og:locale),如"en-US"
  • site_name:网站名,仅用于 og:site_name

爬虫相关参数

  • robots:搜索引擎爬虫指令(如"noindex,nofollow")。部分搜索引擎不会遵循。
  • googlebot:谷歌搜索引擎爬虫指令(如"noindex,nofollow")。
  • hreflang_xx-xx: 告诉搜索引擎当前页面有其他语言或针对不同地区的版本,xx-xx是语言代码。相当于为页面添加<link rel="alternate" href="url" hreflang="xx-xx">

引用相关参数(Citation generator)

  • 由于BWiki没有启用,相关参数无效。有需要请参考官方文档

示例

  • {{#seo:|title=自定义标题|description=页面描述}} → 设置独立标题和描述
  • {{#seo:|title=前缀|title_mode=prepend|title_separator=-}} → 生成"前缀-原标题"格式
  • 多参数使用
{{#seo:
|title=Tools Wiki_BWIKI_哔哩哔哩
|title_mode=replace
|keywords=bwiki, bwiki文档, 解析函数, 模板, 小工具,mediawiki
|description=由BWiki平台用户编辑维护,这个非官方社区提供BWiki常用的模板、组件、文档。交流群可互助答疑。
|image=Tools_icon.png
}}

set

出自扩展 Semantic MediaWiki SMW功能强大,应用广泛。<br>如需单页内大量调用,请考虑使用模板、模块批量查询,这能提升综合体验、降低资源消耗。<br>另请参阅灰机、Fandom的相关文档,他们详述了对SMW的顾虑和限制。

灰机Wiki文档:

SMW官方文档:

set_recurring_event

出自扩展 Semantic MediaWiki SMW功能强大,应用广泛。<br>如需单页内大量调用,请考虑使用模板、模块批量查询,这能提升综合体验、降低资源消耗。<br>另请参阅灰机、Fandom的相关文档,他们详述了对SMW的顾虑和限制。

循环事件。按指定周期重复的时间,比如周会、生日等。

SMW官方文档:

show

出自扩展 Semantic MediaWiki SMW功能强大,应用广泛。<br>如需单页内大量调用,请考虑使用模板、模块批量查询,这能提升综合体验、降低资源消耗。<br>另请参阅灰机、Fandom的相关文档,他们详述了对SMW的顾虑和限制。

灰机Wiki文档:

smwdoc

出自扩展 Semantic MediaWiki SMW功能强大,应用广泛。<br>如需单页内大量调用,请考虑使用模板、模块批量查询,这能提升综合体验、降低资源消耗。<br>另请参阅灰机、Fandom的相关文档,他们详述了对SMW的顾虑和限制。

生成smw查询结果格式的文档。如{{#smwdoc:table |parameters=all }}


SMW官方文档:


special

获取特殊页面在当前语言中的完整标题。MediaWiki原生支持。

语法

{{#special: 特殊页面名称 }}

  • 特殊页面名称:特殊页面的英文名称或本地化名称

示例

  • {{#special: ask }}特殊:询问
  • {{#special: specialpages }}特殊:特殊页面
  • {{#special: ExpandTemplates }}特殊:展开模板
  • {{#special: 2333 }}特殊:2333 (不存在的特殊页面)


speciale

获取特殊页面在当前语言中的完整标题(URL编码)。MediaWiki原生支持。

语法

{{#speciale: 特殊页面名称 }}

  • 特殊页面名称:特殊页面的英文名称或本地化名称

示例

  • {{#speciale: ask }}%E7%89%B9%E6%AE%8A:%E8%AF%A2%E9%97%AE
  • {{#speciale: specialpages }}%E7%89%B9%E6%AE%8A:%E7%89%B9%E6%AE%8A%E9%A1%B5%E9%9D%A2
  • {{#speciale: ExpandTemplates }}%E7%89%B9%E6%AE%8A:%E5%B1%95%E5%BC%80%E6%A8%A1%E6%9D%BF
  • {{#speciale: 2333 }}%E7%89%B9%E6%AE%8A:2333 (不存在的特殊页面)
  • {{#speciale: 不存在的特殊页面 }}%E7%89%B9%E6%AE%8A:%E4%B8%8D%E5%AD%98%E5%9C%A8%E7%9A%84%E7%89%B9%E6%AE%8A%E9%A1%B5%E9%9D%A2 (不存在的特殊页面)


sub

返回指定字符串的子串。支持UTF-8多字节字符处理,并兼容MediaWiki标签语法。出自扩展 ParserFunctions

语法

{{#sub: 字符串 | 起始位置 | 长度 }}

  • 字符串:要截取的目标字符串
  • 起始位置:截取起始位置(0为首字符)。负值表示从末尾倒数
  • 长度(可选):截取长度。正值表示最大长度,负值表示从末尾忽略的字符数

示例

  • {{#sub:Icecream|3}} → cream
  • {{#sub:Icecream|0|3}} → Ice
  • {{#sub:Icecream|-3}} → eam
  • {{#sub:Icecream|3|3}} → cre
  • {{#sub:Icecream|3|-3}} → cr
  • {{#sub:Žmržlina|3}} → žlina
  • {{#sub:<nowiki>This is a </nowiki>test|1}} → est


SUBJECTPAGENAME

获取讨论页面对应的主页面完整名称(包含命名空间)。MediaWiki原生支持。

语法

{{SUBJECTPAGENAME}}

{{SUBJECTPAGENAME: 页面名 }}

  • 页面名(可选):要转换的讨论页面名称,默认为当前页面

示例

  • {{SUBJECTPAGENAME: 讨论:帮助文档 }} → 帮助文档
  • {{SUBJECTPAGENAME: 用户讨论:示例用户 }} → 用户:示例用户
  • 在"文件讨论:示例.jpg"页面中使用{{SUBJECTPAGENAME}} → 文件:示例.jpg


SUBJECTPAGENAMEE

获取讨论页面对应的主页面完整名称(包含命名空间)。MediaWiki原生支持。

语法

{{SUBJECTPAGENAMEE}}

{{SUBJECTPAGENAMEE: 页面名 }}

  • 页面名(可选):要转换的讨论页面名称,默认为当前页面

示例

  • {{SUBJECTPAGENAMEE: 讨论:帮助文档 }}%E5%B8%AE%E5%8A%A9%E6%96%87%E6%A1%A3(帮助文档)
  • {{SUBJECTPAGENAMEE: 用户讨论:示例用户 }}%E7%94%A8%E6%88%B7:%E7%A4%BA%E4%BE%8B%E7%94%A8%E6%88%B7(用户:示例用户)
  • 在"文件讨论:示例.jpg"页面中使用{{SUBJECTPAGENAMEE}}%E6%96%87%E4%BB%B6%3A%E7%A4%BA%E4%BE%8B.jpg(文件:示例.jpg)


SUBJECTSPACE

获取讨论页对应内容页面的命名空间名称。MediaWiki原生支持。

主命名空间返回空字符串。镜像功能是TALKSPACE

语法

{{SUBJECTSPACE: 讨论页名称 }}

  • 讨论页名称(可选):目标讨论页标题,默认为当前页面

示例

  • {{SUBJECTSPACE: 帮助讨论:解析函数}}帮助
  • {{SUBJECTSPACE: 讨论:解析函数}}(主命名空间返回空字符串)


SUBJECTSPACEE

获取讨论页对应内容页面的命名空间名称,并以URL编码。MediaWiki原生支持。

主命名空间返回空字符串。镜像功能是TALKSPACEE

语法

{{SUBJECTSPACEE: 讨论页名称 }}

  • 讨论页名称(可选):目标讨论页标题,默认为当前页面

示例

  • {{SUBJECTSPACEE: 帮助讨论:解析函数}}%E5%B8%AE%E5%8A%A9(帮助)
  • {{SUBJECTSPACEE: 讨论:解析函数}}(主命名空间返回空字符串)

subobject

出自扩展 Semantic MediaWiki SMW功能强大,应用广泛。<br>如需单页内大量调用,请考虑使用模板、模块批量查询,这能提升综合体验、降低资源消耗。<br>另请参阅灰机、Fandom的相关文档,他们详述了对SMW的顾虑和限制。

灰机Wiki文档:

SMW官方文档:


SUBPAGENAME

获取页面标题中的子页面部分。MediaWiki原生支持。

语法

{{SUBPAGENAME:页面名}}

  • 页面名(可选):要获取子页面名的完整页面标题。默认为当前页面。

示例

  • {{SUBPAGENAME:Help:Title/foo/bar}} → bar
  • 在"Help:Title/foo"页面使用{{SUBPAGENAME}} → foo


SUBPAGENAMEE

获取页面标题中的子页面部分,并以URL编码。MediaWiki原生支持。

语法

{{SUBPAGENAMEE:页面名}}

  • 页面名(可选):要获取子页面名的完整页面标题。默认为当前页面。

示例

  • {{SUBPAGENAMEE:Help:Title/一/二}}%E4%BA%8C(二)
  • 在"Help:Title/一"页面使用{{SUBPAGENAMEE}}%E4%B8%80(一)


#switch

多分支条件判断函数,根据输入值匹配不同情况返回对应结果。出自扩展 ParserFunctions

语法

{{#switch: 比较值 
| 情况1 = 结果1 
| 情况2 = 结果2 
| ... 
| #default = 默认结果 
}}
  • 比较值:待匹配的字符串或表达式
  • 情况N = 结果N:匹配时返回的结果
  • #default(可选):无匹配时的默认结果
  • 分组语法:连续多个无等号情况共享下一结果,如:{{#switch: 比较值 | 情况1=a | 情况2 | 情况3 | 情况4 = 结果234 }}

示例

基础匹配
{{#switch: baz
| foo = Foooooo
| baz = Bazzzzz
| Bar
}}

Bazzzzz


{{#switch: test 
| foo = Foo 
| #default = 未匹配 
}}

未匹配


{{#switch: test 
| foo = Foo 
| 未匹配 
}}

未匹配


分组结果
{{#switch: cat 
| dog 
| cat 
| wolf = 犬科 
| lion = 猫科 
| 其他 
}}

犬科


数值比较
{{#switch: 02 
| 2 = 数值匹配 
| 02 = 字符匹配 
}}

数值匹配

参数处理
  • {{#switch: {{{1}}} | red = 红色 | blue = {{{1}}} | 未知颜色 }} → 参数未定义时返回"未知颜色"
特殊字符处理
  • 情况中的等号需转义
{{#switch: a=b 
| a{{=}}b = 模板转义 
| a=b = HTML转义 
}}

模板转义


T

tag

生成一个XML标签,可以设定其标签类型、内文和属性。 有时候一些XML标签形式的解析器结构(即解析器扩展标签),不会解析和运算其内文,导致其无法在模板中使用或配合其他解析器结构使用(如tabber),此时则需要利用tag函数,生成一个内文已经解析了的标签。

MediaWiki原生支持。

格式
{{#tag: 标签名|内容|属性}}
例子
{{#tag: nowiki|这是nowiki里面,
{{padleft:|5|一二}}
切运算都有效}}
这是nowiki里面,一二一二一切运算都有效
{{#tag: ref|这是备注里面,
{{padleft:|5|一二}}
切运算都有效|name="tag" group="tag"}}
[tag 1]
{{#tag: references||group="tag"}}
  1. 这是备注里面,一二一二一切运算都有效
  2. (内文连一个空格都没有的话,便会生成一个自关闭标签)


    talkpagename

    在内容页面获取对应的讨论页名(带有命名空间)

    MediaWiki原生支持。

    格式
    {{TALKPAGENAME}}
    {{TALKPAGENAME: 页面名}}
    例子
    {{TALKPAGENAME}}
    帮助讨论:解析函数
    {{TALKPAGENAME:首页}}
    讨论:首页
    实际用例
    一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时仅供批判性参考

    talkpagenamee

    在内容页面获取对应的讨论页名,以URL编码(带有命名空间)

    MediaWiki原生支持。

    格式
    {{TALKPAGENAMEE}}
    {{TALKPAGTALKPAGENAMEEENAME: 页面名}}
    例子
    {{TALKPAGENAMEE}}
    %E5%B8%AE%E5%8A%A9%E8%AE%A8%E8%AE%BA:%E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0 (帮助讨论:解析函数)
    {{TALKPAGENAMEE:首页}}
    %E8%AE%A8%E8%AE%BA:%E9%A6%96%E9%A1%B5 (讨论:首页)


    talkspace

    获取内容页面对应的讨论页面的命名空间名。

    MediaWiki原生支持。

    格式
    {{TALKSPACE}}
    {{TALKSPACE:页面名}}
    例子
    {{TALKSPACE}}
    帮助讨论
    {{TALKSPACE:首页}}
    讨论
    {{TALKSPACE:模板:=}}
    模板讨论
    实际用例
    一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时仅供批判性参考

    talkspacee

    获取内容页面对应的讨论页面的命名空间名,以URL编码。

    MediaWiki原生支持。

    格式
    {{TALKSPACEE}}
    {{TALKSPACEE:页面名}}
    例子
    {{TALKSPACEE:首页}}
    %E8%AE%A8%E8%AE%BA (讨论)
    {{TALKSPACEE}}
    %E5%B8%AE%E5%8A%A9%E8%AE%A8%E8%AE%BA (帮助讨论)
    {{TALKSPACEE:模板:=}}
    %E6%A8%A1%E6%9D%BF%E8%AE%A8%E8%AE%BA (模板讨论)


    template_display

    出自扩展Page Forms。请参阅帮助:PageForms#template_display

    template_params

    出自扩展Page Forms。请参阅帮助:PageForms#template_params

    time

    代码 说明 当前输出值
    清除此页面缓存以更新结果)
    Y 4位数表示的年。 2025
    y 2位数表示的年。 25
    L 1表示闰年(Leap year),0表示非闰年。 0
    o[注 1] ISO-8601 规定的该周所属年份。[注 2] 2025[注 3]
    1. 需要 PHP 5.1.0 或更新版本和 MediaWiki rev:45208
    2. 一般与 Y 相同,除非 ISO 规定的周数(W)属于前一年或者后一年,则使用 ISO 规定的年份。
    3. 如果 注 1 的条件不满足,会显示字母 o
    n 月份号,无前导零。 9
    m 月份号,有前导零。 09
    M 月份名称缩写,使用网站语言。(英文结果为 Sep 9月
    F 月份名称全称,使用网站语言。(英文结果为 September 9月
    xg 月份名称全称,使用网站语言的属格(Genitive)形式,注意区分其与主格(Nominative)形式的区别。

    这项功能在斯拉夫语族(Slavic languages)中十分重要,如波兰语、俄语、白俄罗斯语、捷克语、斯洛伐克语、斯洛文尼亚语、乌克兰语等。

    在中文环境下:
    属格为全汉字月份名称;
    主格为数字+汉字月份名称。

    对于中文:

    (主格)

    {{#time:Y F d|20 June 2010|zh}}

    2010 6月 20

    (属格)

    {{#time:Y xg d|20 June 2010|zh}}

    2010 6月 20

    W ISO 8601 规定的周数,有前导零。 38
    j 月份内的日期号,无前导零。 18
    d 月份内的日期号,有前导零。 18
    z 年份内的日期号 (1月1日 = 0)。
    注意:要获得 ISO 规定的日期号,需加上1。
    260
    D 星期的缩写。国际上不通用。
    l 星期的全称。国际上不通用。 星期四
    N ISO 8601 规定的星期编号(星期一 = 1,星期日 = 7)。 4
    w 星期编号(星期日 = 0,星期六 = 6)。 4
    a 早上为 am(00:00:00 → 11:59:59);
    其他时间为 pm(12:00:00 → 23:59:59)。
    pm
    A 上方 a 的大写形式。 PM
    g 12小时制的时,无前导零。 8
    h 12小时制的时,有前导零。 08
    G 24小时制的时,无前导零。 20
    H 24小时制的时,有前导零。 20
    分 和 秒
    i 小时后的分钟数,有前导零。 39
    s 分钟后的秒钟数,有前导零。 26
    U UNIX时间(Unix time)。从格林尼治时间(GMT)1970年1月1日00:00:00开始计的秒钟数。 1758227966
    时区(需 MediaWiki 1.22wmf2
    e 时区标识符。 UTC
    I 当前日期是否使用日光节约时间(夏令时)。 0
    O 与格林尼治时间(GMT)的时差。 +0000
    P 与格林尼治时间(GMT)的时差,带有冒号分隔。 +00:00
    T 时区缩写。 UTC
    Z 以秒计的时差。 0
    杂项
    t 当前月份的天数。 30
    c ISO 8601 格式的日期,等价于 Y-m-d"T"H:i:s+00:00 2025-09-18T20:39:26+00:00
    r RFC 5322 格式的日期,等价于 D, j M Y H:i:s +0000,其中星期名和月份名国际上不通用。 Thu, 18 Sep 2025 20:39:26 +0000
    非公历日历
    伊斯兰历(Islamic calendar),又称 希吉来历(Hijri calendar)
    xmj 月份内的日期号。 25
    xmF 月份名称全称。 赖比尔·敖外鲁月
    xmn 月份号。 3
    xmY 全长表示的年。 1447
    伊朗历(Iranian calendar),又称 贾拉利历(Jalali calendar)
    xij 月份内的日期号。 27
    xiF 月份名称全称。 Shahrivar
    xin 月份号。 6
    xiY 全长表示的年。 1404
    xiy 2位数表示的年。 04
    希伯来历(Hebrew calendar
    xjj 月份内的日期号。 25
    xjF 月份名称全称。 以禄月
    xjt 当前月份的天数。 29
    xjx 属格形式的月份名称。 Elul
    xjn 月份号。 12
    xjY 全长表示的年。 5785
    泰国历(Thai solar calendar
    xkY 泰国历的全长表示的年。
    注意:公历1941年前的年份,1月到3月的范围内,计算得到的泰国历年份不正确。(原因
    2568
    民国纪年(Minguo calender
    朝鲜历(North Korean calendar),又称 主体历(Juche calendar)
    xoY 全长表示的年。 114
    日本年号(Japanese era name, or Japanese nengo)
    xtY 全长表示的年(带有年号)。 令和7
    转换标志
    xn 将下一个数字代码转换为原始 ASCII 格式数字。 在印地语中,
    {{#time:H, xnH}}
    得到的是 ०६, 06
    xN xn 功能类似。但它持续起作用到字串末尾,或字串中的下一个 xN 处。
    xr 将下一个数字代码转换为罗马数字格式。仅对 10,000 以内的数字有效
    (MediaWiki 1.20 之前,仅对 3,000 以内的数字有效)
    {{#time:xrY}}

    MMXXV
    xh 将下一个数字代码转换为希伯来数字格式。
    {{#time:xhY}}

    ב'כ"ה

    将日期和/或时间(公历)按格式字串规定的格式进行转换。

    可自行指定日期/时间对象,默认使用魔术字(Magic word

    {{CURRENTTIMESTAMP}}

    的值(该值使用世界协调时间,UTC),也就是页面最近一次渲染为HTML的时间。

    出自扩展 ParserFunctions

    格式
    {{#time: 格式字串}}
    {{#time: 格式字串|日期/时间对象}}
    {{#time: 格式字串|日期/时间对象|语言代码}}
    在右边的表格中列出了支持的格式控制代码。'格式字串'中的任何不被识别的字符将原样输出,包括空格(系统不用它们来编译代码)。
    还有两种方法可以使'格式字串'内的字符原样输出:
    1. 反斜杠\后加字符,可以原样输出单个字母:
    2. 一对半角双引号" "内的字符被当作文字,会原样输出,不带双引号。
    另外,还可以用xx来输出单个字母x
    例子
    {{#time:\m}}
    m
    {{#time:\xg}}
    x8x被原样输出,g被当作格式控制代码)
    {{#time: Y-m-d}}
    2025-09-18
    {{#time:
    [[Y]]
    m d}}
    2025 09 18
    {{#time:
    [[Y (year)]]
    }}
    2025 (25UTCpmThu, 18 Sep 2025 20:39:26 +0000) (year被当作格式控制代码year
    {{#time:
    [[Y "(year)"]]
    }}
    2025 (year)
    {{#time: i's"}}
    39'26"
    '日期/时间对象'可以使用任何PHP中strtotime()函数支持的格式。可以使用绝对时间(如20 December 2000)和相对时间(如+20 hours):
    {{#time: r|now}}
    Thu, 18 Sep 2025 20:39:27 +0000
    {{#time: r|+2 hours}}
    Thu, 18 Sep 2025 22:39:27 +0000
    {{#time: r|now + 2 hours}}
    Thu, 18 Sep 2025 22:39:27 +0000
    {{#time: r|20 December 2000}}
    Wed, 20 Dec 2000 00:00:00 +0000
    {{#time: r|December 20, 2000}}
    Wed, 20 Dec 2000 00:00:00 +0000
    {{#time: r|2000-12-20}}
    Wed, 20 Dec 2000 00:00:00 +0000
    {{#time: r|2000 December 20}}
    错误:无效时间。
    '语言代码'使用的是ISO 639-3标准,可以显示所选语言的时间格式:
    {{#time:d F Y|1988-02-28|nl}}
    28 februari 1988
    {{#time:l|now|uk}}
    четвер
    {{#time:d xg Y|20 June 2010|pl}}
    20 czerwca 2010
    译者注:以上三例本wiki内不起作用,因为不支持该语言。
    如果需要在计算时使用UNIX时间,可以在UNIX时间前加上@
    {{#time: U|now}}
    1758227967
    {{#time: r|@1485582296}}
    Sat, 28 Jan 2017 05:44:56 +0000
    注意:可接受的输入时间范围0111年1月1日9999年12月31日。100年到110年的各个格式控制代码的输出不一致:YL按照100-110年来计算;但rDlU是按照2000-2010年来计算的:
    {{#time: d F Y|29 Feb 0100}}
    01 3月 0100
    上面的结果正确,但是:
    {{#time: r|29 Feb 0100}}
    Mon, 01 Mar 0100 00:00:00 +0000
    上面的结果错误,因为100年不是闰年,但2000年是闰年,上面的结果是按照2000年计算的。
    超过9999年会得到不正确的结果:
    {{#time: d F Y|15 April 10000}}
    错误:无效时间。
    {{#time: r|10000-4-15}}
    Sat, 15 Apr 2000 10:00:00 +0000
    0-99年被当作2000-2069年、1970-1999年来处理,除非使用4位数年格式来表示这些年份:
    {{#time: d F Y|1 Jan 6}}
    01 1月 2006
    {{#time: d F Y|1 Jan 06}}
    01 1月 2006
    {{#time: d F Y|1 Jan 006}}
    01 1月 2006
    {{#time: d F Y|1 Jan 0006}}
    01 1月 0006 (使用了4位数年)
    星期名称支持100-110年和1753年以后的年份。111-1752年的r中星期输出为Unknownl的输出为<>,且这几年的r输出值不能当作有效的输入值。
    译者注:
    测试了一些111-1752之间的年份,已经可以正常显示星期,且正确:
    {{#time: r|1 Jan 1600}}
    Sat, 01 Jan 1600 00:00:00 +0000 (应为星期六)
    {{#time: r|23 Dec 802}}
    Mon, 23 Dec 0802 00:00:00 +0000 (应为星期一)
    使用日期转换进行验证。
    可以指定完整的绝对日期,或者是一部分,此函数会将缺少的部分用当前日期的值填补:
    {{#time: Y|January 1}}
    2025
    注意:填补功能在不同情况下填补不同的内容:
    {{#time: Y m d H:i:s|June}}
    2025 06 18 00:00:00 (使用了一天的开始时刻,填补了当前月份内的日期号、年份)
    {{#time: Y m d H:i:s|2003}}
    2003 09 18 00:00:00 (使用了一天的开始时刻,填补了当前年份内的日期号)
    在MediaWiki r86805之后,4位数字一概会被认为是年份,而非小时与分钟:
    {{#time: Y m d H:i:s|1959}}
    1959 09 18 00:00:00
    6位数字会被认为是小时、分钟和秒钟,如果得到的时间不正确,则会报错(一概不会当作年份和月份):
    {{#time: Y m d H:i:s|195909}}
    2025 09 18 19:59:09 (被当作时分秒而不是年月)
    {{#time: Y m d H:i:s|196009}}
    错误:无效时间。 (即使19:60:09不是正确的时间,196009也不会被当作年月)
    函数定量计算天数来得到日期:
    {{#time: Y F d|January 0 2008}}
    2007 12月 31
    {{#time: F d|January 32}}
    错误:无效时间。 (一个月超过31天的话,会报错)
    {{#time: F d|February 29 2008}}
    2月 29
    {{#time: F d|February 29 2007}}
    3月 01
    {{#time:Y F|now -1 months}}
    2025 8月
    #time中'格式字串'的总长度限制为6000字符
    关于时区
    解析函数#time中有一个bug(更确切的说是PHP日期时间的bug),不允许传入非整数的相对时差。这个问题在整点时区不会出现,如东部夏令时间(EDT):
    {{#time:g:i A|-4 hours}}
    4:39 PM
    但是,委内瑞拉(委内瑞拉标准时间,VET)与世界协调时间(UTC)的时差是-4.5小时,如果直接输入则不会得到正确的结果,如下:
    {{#time:g:i A|-4.5 hours}}
    5:39 AM
    可以将时差转换为分钟或者秒钟来解决这个问题:
    {{#time:g:i A|-270 minutes}}
    4:09 PM
    {{#time:g:i A|-16200 seconds}}
    4:09 PM
    (上述方法由此函数开发者 Tim Starling 提供)


    timel

    与time一致,默认使用当地时间(在'日期/时间对象'留空时)。

    出自扩展 ParserFunctions

    例子
    {{#time: Y-m-d}}
    2025-09-18 (世界协调时间,UTC)
    {{#timel: Y-m-d}}
    2025-09-19 (北京时间,UTC+8)
    {{#time: Y F d H:i:s}}
    2025 9月 18 20:39:26 (世界协调时间,UTC)
    {{#timel: Y F d H:i:s}}
    2025 9月 19 04:39:26 (北京时间,UTC+8)


    titleparts

    获取子页面的一部分标题。以“/”分割,返回从指定开始位置,指定长度的标题。

    处理时,会按照Wiki标题规则:下划线作为空格处理;HTML字符实体会被转化;页面首字母是大写的。

    出自扩展 ParserFunctions

    格式
    {{#titleparts: 页面名|数量|开始位置}}
    例子
    {{#titleparts: 帮助:解析函数/T/titleparts/Code}}
    帮助:解析函数/T/titleparts/Code
    {{#titleparts: 帮助:解析函数/T/titleparts/Code|1}}
    帮助:解析函数,效果同ROOTPAGENAME
    {{#titleparts: 帮助:解析函数/T/titleparts/Code|2}}
    帮助:解析函数/T
    {{#titleparts: 帮助:解析函数/T/titleparts/Code|2|2}}
    T/titleparts
    {{#titleparts: 帮助:解析函数/T/titleparts/Code||2}}
    T/titleparts/Code
    注意
    段落长度和段落位置均可以使用负数,负数段落长度表示从尾开始去掉该数量的段落,负数段落位置表示从尾开始计算段落位置。
    例子
    {{#titleparts: 帮助:解析函数/T/titleparts/Code|-1}}
    帮助:解析函数/T/titleparts,效果同BASEPAGENAME
    {{#titleparts: 帮助:解析函数/T/titleparts/Code|-4}}
    ,去掉的段落数等于段落总数。
    {{#titleparts: 帮助:解析函数/T/titleparts/Code|-5}}
    ,去掉的段落数超出了段落总数。
    {{#titleparts: 帮助:解析函数/T/titleparts/Code||-1}}
    Code,效果同SUBPAGENAME
    {{#titleparts: 帮助:解析函数/T/titleparts/Code|-1|2}}
    T/titleparts
    {{#titleparts: 帮助:解析函数/T/titleparts/Code|-1|-2}}
    titleparts
    注意
    标题字串最多能含有255个半角字符或相应数量的全角字符,就跟正常页面标题一样。最多只会进行25次切割,25次以后的内容会被当作同一个段落处理。
    例子
    {{#titleparts: a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/aa/bb/cc/dd/ee|1|25}}
    y/z/aa/bb/cc/dd/ee
    注意
    若标题字串含有标题内禁用的字符,此函数会返回原字串或返回空字串。
    例子
    {{#titleparts: {one/two} | 1 | 1 }}{one/two}
    {{#titleparts:
    [[沙盒]]
    /123|1|2}}
    沙盒/123
    {{#titleparts: red/#00FF00/blue|1|3}}
    实际用例
    一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时仅供批判性参考


    token

    返回给定的字符串,其中所有出现的搜索词都被替换为替换词。

    此功能与 replace 一样,但参数顺序相反

    出自扩展 ParserPower

    格式
    {{#token: 替换项|搜索项|源字符串}}
    例子
    {{#token:Clown piece}}
    Clown piece
    {{#token:
    <nowiki> </nowiki>
    |_|My_little_home_page}}
    My little home page



    tokenif

    出自扩展ParserPower

    参见帮助:ParserPower#tokenif

    trim

    出自扩展ParserPower

    参见帮助:ParserPower#trim

    trimuesc

    出自扩展ParserPower

    参见帮助:ParserPower#trimuesc

    U

    uc

    把输入的字串中所有字母变成大写。

    MediaWiki原生支持。

    格式
    {{uc: wikitext}}
    例子
    {{uc: qwer脸滚键盘}}
    QWER脸滚键盘


    ucfirst

    把输入的字串中第一个字母变成大写。

    MediaWiki原生支持。

    格式
    {{ucfirst: wikitext}}
    例子
    {{ucfirst: qwer脸滚键盘}}
    Qwer脸滚键盘
    {{ucfirst: 你们说的qwer脸滚键盘是什么意思啊}}
    你们说的qwer脸滚键盘是什么意思啊


    ueif

    出自扩展ParserPower。 参见帮助:ParserPower#ueif

    ueifeq

    出自扩展ParserPower。 参见帮助:ParserPower#ueifeq

    uesc

    出自扩展ParserPower。 参见帮助:ParserPower#uesc

    uescnowiki

    出自扩展ParserPower。 参见帮助:ParserPower#uescnowiki

    ueswitch

    出自扩展ParserPower。 参见帮助:ParserPower#ueswitch

    urldecode

    解码URL编码的字符串。

    MediaWiki原生支持。

    格式
    {{#urldecode: 字符串}}
    例子
    {{#urldecode: ABC%E4%B8%AD%E6%96%87+%E8%8B%B1%E6%96%87+123%26456%2B1%25}}
    ABC中文 英文 123&456+1%
    {{#urldecode: ABC%E4%B8%AD%E6%96%87+%E8%8B%B1%E6%96%87+123%26456%2B1%25}}
    ABC中文 英文 123&456+1%(用urlencode加QUERY编码的字串)
    {{#urldecode: ABC%E4%B8%AD%E6%96%87_%E8%8B%B1%E6%96%87_123%26456%2B1%25}}
    ABC中文_英文_123&456+1%(用urlencode加WIKI编码的字串)
    {{#urldecode: ABC%E4%B8%AD%E6%96%87%20%E8%8B%B1%E6%96%87%20123%26456%2B1%25}}
    ABC中文 英文 123&456+1%(用urlencode加PATH编码的字串)


    urlencode

    URL编码指定字符串。

    MediaWiki原生支持。

    格式
    {{urlencode: 字符串}}
    {{urlencode: 字符串|格式}}
    格式可选 QUERY / WIKI / PATH 。默认为QUERY
    • QUERY 空格变为 +
    • WIKI 空格变为 _
    • PATH 空格变为 %20
    例子
    {{urlencode: ABC中文 英文 123&456+1%}}
    ABC%E4%B8%AD%E6%96%87+%E8%8B%B1%E6%96%87+123%26456%2B1%25
    {{urlencode: ABC中文 英文 123&456+1%|QUERY}}
    ABC%E4%B8%AD%E6%96%87+%E8%8B%B1%E6%96%87+123%26456%2B1%25
    {{urlencode: ABC中文 英文 123&456+1%|WIKI}}
    ABC%E4%B8%AD%E6%96%87_%E8%8B%B1%E6%96%87_123%26456%2B1%25
    {{urlencode: ABC中文 英文 123&456+1%|PATH}}
    ABC%E4%B8%AD%E6%96%87%20%E8%8B%B1%E6%96%87%20123%26456%2B1%25


    V

    var

    输出变量。 变量需要事先用vardefinevardefineecho定义。

    出自扩展 Variables BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。

    格式
    {{#var: 变量名}}
    {{#var: 变量名|默认值}}
    变量不存在则输出默认值
    例子
    先定义变量
    {{#vardefine: abc|123456}}
    {{#var: count|未定义}}
    未定义 输出不存在的变量count,会获得默认值。
    {{#var: abc|未定义}}
    123456获取已定义的变量abc。


    var_final

    【将弃用】输出变量,使用页面解析结束时变量的值。因此,这允许在未定义变量前使用变量。

    注意
    在MediaWiki 1.35版本后,var_final被标记为弃用,MediaWiki 1.39版本后将移除。目前,在BWIKI可以使用,灰机Wiki已弃用。
    由于行为复杂,它可能会出现未预期的表现,容易让代码难以理解和阅读。

    出自扩展 Variables BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。

    格式
    {{#var_final: 变量名}}
    {{#var_final: 变量名|默认值}}
    如果变量未定义,返回默认值
    例子
    {{#var_final: count233|未定义}}
    谨慎使用Variables在此处获取在后面代码中才会被定义的count的内容。
    此处定义 count233:
    {{#vardefine: count233|谨慎使用Variables}}
    实际用例
    一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时仅供批判性参考


    vardefine

    定义变量。即将一个字符串存储到指定变量中,以便于在后续代码中多次使用。此函数不会输出任何内容。

    出自扩展 Variables BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。

    格式
    {{#vardefine: 变量名|}}
    例子
    {{#vardefine: count|0}}
    定义count变量,值为0
    {{#vardefine: text}}
    定义空变量text
    {{#vardefine: text|新的233}}
    可以重复定义以覆盖已有变量,现在text的值是新的233
    {{#vardefine: text|
    {{#var: text}}
    内容}}
    可以使用更复杂的wikitext来为变量赋值,现在text的值是:新的233内容
    {{#vardefine: count|
    {{#expr:
    {{#var: count}}
    +1}}
    }}
    通过与expr组合,实现计算,现在变量count的内容为1


    vardefineecho

    定义并输出变量。行为上相当于vardefine和var先后调用。

    出自扩展 Variables BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。

    格式
    {{#vardefineecho: 变量名称|内容值(默认为空字串)}}
    例子
    {{#vardefineecho: text|变量的内容,看到了吗}}
    变量的内容,看到了吗定义变量同时输出变量内容,现在变量text的内容为“变量的内容,看到了吗”。
    其他用法
    配合varexists,实现防止多次加载资源
    {{#if:
    {{#varexists:防止多次加载JS_XXX}}
    ||
    {{#vardefineecho:防止多次加载JS_XXX|这里加载JS}}
    }}
    这里加载JS避免JS重复加载
    {{#if:
    {{#varexists:防止多次加载CSS_XXX}}
    ||
    {{#vardefineecho:防止多次加载CSS_XXX|这里是CSS内容或加载CSS}}
    }}
    这里是CSS内容或加载CSS避免CSS重复加载


    varexists

    判断变量是否存在。存在则返回1,否则返回空。经常配合#if使用。

    出自扩展 Variables BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。

    格式
    {{#varexists: 变量名}}
    例子
    先定义变量 varexiststext:
    {{#vardefine:varexiststext|想吃烤肠}}
    判断存在否
    {{#varexists: varexiststext}}
    1
    未定义的变量
    {{#varexists: count123465}}
    配合if使用
    {{#if:
    {{#varexists: count123465}}
    |存在|不存在}}
    不存在


    W

    while

    只要循环条件的wikitext输出非空,就循环执行。

    注意
    死循环可能导致页面无响应,甚至增加服务器压力。使用请谨慎。

    出自扩展 Loops

    格式
    {{#while:
     |条件
     |循环内容
    }}
    例子
    {{#vardefine: i|0}}
    {{#while:
     |
    {{#ifexpr:
    {{#var: i}}
    < 5|true}}

     |
    <nowiki/>

    *
    {{#var: i}}
    {{#vardefine: i|
    {{#expr:
    {{#var: i}}
    + 1}}
    }}

    }}

    • 0
    • 1
    • 2
    • 3
    • 4


    实际用例
    一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时仅供批判性参考

    widget

    缺少内容。本Wiki由与你一样的用户共同编写,请帮助我们完善内容:开始编辑
    • 参考官方文档和其他文档完善内容
    • 增加实际用例和技巧

    调用小部件(Widgets)。

    Widgets允许用户创建HTML页面,能更灵活的为Wiki添加功能。

    出自扩展 Widgets

    格式
    {{#widget: 小部件名|参数1=值1|参数2=值2|...|参数n=值n}}
    例子
    请参见Widgets


    参考资料

    1. Hello