社区文档编写中,欢迎参与。社区答疑群(非官方):717421103
版本250312.1.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

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

常用于在模板中处理锚点相关的参数。创建链接时,可保证锚点被正确编码。

语法

{{anchorencode:文本}}

示例

示例 效果
基本

{{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,手动编码锚点当然可行。因此本函数更多地用于模板中,比如处理参数中未知的锚点参数。


arraydefine

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


此函数需要输入数据字符串和分隔符,用分隔符切分字符串来构造数组。当然,数据字符串可以是固定值,也可以来自模板或SMW查询结果。

基于Arrays扩展,用户能便捷的构造表格、列表和图鉴等各类重复性结构(当然也能用Loops扩展、Lua模块等等)。

语法

{{#arraydefine: 数组名 | 数据字符串 }}
默认以逗号“,”作为分割符,将数据字符串拆分危数组元素。
{{#arraydefine: 数组名 | 数据字符串 | 分隔符 }}
分隔符:可指定分隔符替代默认值,支持正则表达式
{{#arraydefine: 数组名 | 数据字符串 | 分隔符 | 选项 }}
选项 (可选) 是一个匿名字符串参数,支持unique、sort、print。
多个选项参数以英文逗号分隔,即“键=值, 键=值”,例如:“sort=desc, print=list”、“unique, print=list”
unique:去重
sort:排序,支持 none(默认),desc,asce/asc,random,reverse
print 输出格式: list 或 pretty
  • list: a、b、c
  • pretty: a、c和c

示例

{{#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}} → 定义数组e,以“,”为分隔符,数组元素去重,降序排列,并作为列表输出:yellow、red、orange


arraydiff

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


多个数组的差集,就是从第一个数组中去除所有存在于其他数组中的元素,得到的结果数组。参见:PHP array_diff 函数MediaWiki和Arrays扩展使用PHP语言开发,因此其底层行为取决于PHP的特性。

例如对集合 [math]\displaystyle{ A }[/math][math]\displaystyle{ B }[/math][math]\displaystyle{ C }[/math],它们的差集可以表示为 [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}}
[math]\displaystyle{ A - B }[/math]{{#arraydiff:x | a | b }}1、1、3、apple、apple
[math]\displaystyle{ A - C }[/math]{{#arraydiff:x | a | c }}2、1、1、apple、apple
[math]\displaystyle{ A - B - C }[/math]{{#arraydiff:x | a | b | c }}1、1、apple、apple
[math]\displaystyle{ A - C - B }[/math]{{#arraydiff:x | a | c | b }}1、1、apple、apple

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


arrayindex

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

语法

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

  • 序号,一个数字。从0开始计数(第一个元素的序号是0),负数用于从后向前定位(-1代表最后一个元素)
  • 如果数组名或序号无效,函数将输出默认值(默认为空字符串)。
    • 数组名无效:不存在该数组。如在定义数组前使用它的值
    • 序号无效是指:找不到对应位置的值。这可能是序号非数字、越界(超过实际数据范围)导致

示例

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

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


arrayintersect

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


两个集合 [math]\displaystyle{ A }[/math][math]\displaystyle{ B }[/math] 的交集,指 [math]\displaystyle{ x \in A }[/math][math]\displaystyle{ x \in B }[/math],下文记为 [math]\displaystyle{ A ∩ B }[/math]

结果数组可能包含重复值,其元素顺序与第一个数组相同;从结果看,可以视为从第一个集合中移除所有其他集合都不存在的元素。

语法

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

此函数将计算 数组1 ∩ 数组2 ∩ ... ∩ 数组n,并将结果存入数组 新数组名

示例

有数组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

arraymap用于分割字符串并以指定格式输出。出自扩展 Page Forms

语法

{{#arraymap:字符串|分隔符|别名|输出wikitext|输出分隔符|输出连接词}}

  • 字符串:分割的目标
  • 分隔符:用于分割字符串。默认值为,。为空时将逐字符分割字符串,这会让结果包含很多分隔符。
  • 别名:在输出wikitext中作为占位符。
  • 输出wikitext:包含别名的wikitext,别名将被替换为子字符串多次输出
  • 输出分隔符:可选,默认为英文逗号,。在两个输出wikitext之间会被插入输出分隔符
  • 输出连接词:可选。在最后一个“输出wikitext”前,将使用此连接词替代输出分隔符

示例

指定格式:{{#arraymap:a_b_c | _ | @ | '''@''' | + }}a+b+c
指定格式:{{#arraymap:a_b_c | _ | @ | 有'''@'''的wikitext | …… }}a的wikitext……有b的wikitext……有c的wikitext
指定格式和连接词:{{#arraymap:托奇_环理_小满_秘银_从云_辰纱 | _ | @ | '''@''' | , |和 }}一起开会托奇环理小满秘银从云辰纱一起开会
奇怪的连接词:{{#arraymap:点点,丩卩夂忄,马小萌,Lu | , | @ | {{key|@}} | 、 |同时发现了}}点点丩卩夂忄马小萌 同时发现了 Lu
批量处理:{{#arraymap:apple, banana, cherry | , | @ | {{ucfirst:@}}}}Apple, Banana, Cherry
筛选:{{#arraymap: 2, 7, 4, 9, 3 |,|@|{{#ifexpr: @ > 5 | @ }} }}7, 9

更多用法

字符串可以来自SMW查询,模板参数或其他表达式
这可以在不额外使用模板的情况下,格式化SMW查询结果。
比如:{{#arraymap:一个模板用于获取数据|分隔符|别称|{{一个模板|别称|其他参数}}}}
比如:{{#arraymap:SMW查询|分隔符|别称|简单的wikitext}}

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


arraymaptemplate

分割字符串,并以指定模板格式逐一输出。其行为与arraymap相似。出自扩展 Page Forms

说明
有些类型的映射非常复杂,不能放在 #arraymap 函数中。为此,您可以使用类似的 #arraymaptemplate 函数。
要使用该函数,首先创建一个模板,接收一个字段(模板中应将其称为 {{{1}}}),并将您想要的映射应用到该字段。然后在主模板字段上应用 #arraymaptemplate,就像使用 #arraymap一样
其中 "模板 "是相关映射模板的名称。

语法

{{#arraymaptemplate:字符串|模板名|分隔符|输出分隔符}}
  • 字符串:分割的目标
  • 模板名:用于格式化输出的模板。被分割的字符将作为参数{{{1}}}传入模板
  • 分隔符:用于分割字符串
  • 输出分隔符:可选,默认为,英文逗号,在两个模板输出之间会被插入输出分隔符

示例

要以列表的形式显示作者列表,可以先创建一个名为 "Author"的模板,内容如下:

* {{{1}}}

然后即可使用arraymaptemplate:

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

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


arraymerge

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

语法

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

合并数组1数组2……数组n,到新数组中。

示例

先定义数组abc:

  • a: {{#arraydefine:a|orange}}
  • b: {{#arraydefine:b|red, red}}
  • c: {{#arraydefine:c|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: 数组名 | 分隔符 | 占位符 | 输出格式 | 选项 }}

  • 数组名: 指定要输出的数组。
  • 分隔符:用于分隔多个数组元素的字符串。默认为语言环境的顿号(如中文为 `、`)。支持 HTML 标签(如<br/>)。
  • 占位符:在输出wikitext中占位,每个元素会在占位符的位置输出
  • 输出格式:一段wikitext,定义单个数组元素的输出格式。需要包含占位符,否则将直接输出原始值。
  • 选项:支持print=pretty,将最后一个分隔符替换为

示例

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

示例 效果
基本 {{#arrayprint:b}} red、orange、blue
无分隔符 {{#arrayprint:b | }} redorangeblue
以换行分隔 {{#arrayprint:b |<br/> }} red
orange
blue
wikitext示例 {{#arrayprint:b | <br/> | @ | @的长度:{{#len:@}} }} red的长度:3
orange的长度:6
blue的长度:4
wikitext示例 {{#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 (size=2)、b (size=2)、c (size=0)和不存在的d (size=)


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


再次查看Size:a (size=)、b (size=2)、c (size=0)和不存在的d (size=)
容易看出,一个空数组c的size是0,而被清除后的数组a的size是空,与不存在的d一致,可以验证a确实被删除了。


arraysearch

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

对于一个数组,获取指定值首次出现的位置(从0开始)。没有则返回空。

能额外指定搜索开始位置,和搜索成功或失败时的返回值。

语法

{{#arraysearch: 数组名 | 搜索值 | 开始位置 | 成功值 | 失败值 }}

示例

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

搜索指定元素的位置:

  • {{#arraysearch:b|white}} = 1
  • {{#arraysearch:b|white|2}} = 3
  • {{#arraysearch:b|red}} = 2
  • {{#arraysearch:b|/r.*/}} = 2(正则)
  • {{#arraysearch:b|blu}} = (结果为空)

指定成功/失败时的返回值:

  • {{#arraysearch:b|white|0|yes|no}} = yes
  • {{#arraysearch:b|yellow|0|yes|no}} = no


arraysearcharray

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

创建一个新数组,包括指定数组中所有符合条件的元素。搜索条件支持正则表达式

支持指定搜索起始位置和最大结果数量。当搜索条件是正则时,可以额外指定结果的转换规则。

语法

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

  • 新数组名: 将用于保存筛选结果。
  • 原数组名: 目标数组。
  • 搜索条件: 正则表达式或字符串搜索值。
  • 起始索引: 从目标数组的指定位置开始搜索。
  • 限制数量: 限制返回结果的数量。不限制可以留空或填-1。
  • 转换规则: 可选参数,对搜索结果进行转换,如果搜索值是正则表达式,transform 可以包含 $n,其中 n 是正则表达式结果中的变量。

示例

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

将所有a开头的值存入x {{#arraysearcharray:x|a|/^a.+/ }} -> apple、add1
a开头,从第2项开始 {{#arraysearcharray:x|a|/^a.+/ | 2}} -> add1
a开头,仅限1个 {{#arraysearcharray:x|a|/^a.+/ | 0 | 1}} -> apple
将数字结尾的值存入x {{#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新的并行解析器不兼容,请参阅扩展主页了解更多信息。

数组不存在时返回空字符串,可用于判断数组是否存在。

语法

{{#arraysize: 数组名 }}

示例

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


arrayslice

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

从数组的指定位置开始,提取指定长度的片段,存入新数组。

语法

{{#arrayslice:新数组名|数组名|偏移量|长度}}

  • 新数组名:存放结果
  • 数组名:操作目标
  • 偏移量:切片起始位置,可以是负数用于向后索引(最后一个元素是-1)
  • 长度:要提取的元素数量,默认为后续全部元素。

数组不存在时,返回空字符串

示例

有数组x为:{{#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 反序

示例

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

{{#arraysort:x}} → 1、3、2、7、6、5、11
{{#arraysort:x|reverse}} → 11、5、6、7、2、3、1
{{#arraysort:x|random}} → 7、6、3、2、5、11、1
{{#arraysort:x|desc}} → 7、6、5、3、2、11、1
{{#arraysort:x|asc}} → 1、11、2、3、5、6、7
注意:数组元素类型是字符串,因此顺序排序结果为 1、11、2、3


arrayunion

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

将多个数组合并,存到新数组中。合并时不保留重复值。

语法

{{#arrayunion: 新数组名 | 数组1 | 数组2 | ... | 数组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:数组名}}

示例

对于数组a: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原生支持。


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

语法

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

示例

{{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-04-27
注意其末尾需要冒号。

示例

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

{{#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-06-01

注意

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

示例

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

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


canonicalurl

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

语法

{{canonicalurl: 页面名 | 参数 }}
  • 不会校验页面和参数是否存在。
  • 多个参数需要手动处理,如示例所示。
  • 相关函数是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)(25679249)(509732352)(29136181)(111160720)(3546653302721147)

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


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}} → 1,959
编辑次数:{{#cscore:39886146|changes}} → 8,300
编辑页面数量:{{#cscore:39886146|pages}} → 1,798


css

为页面增加CSS。出自扩展 CSS


向页面添加CSS代码或CSS文件。CSS会被插入HTML的head中(而<bstyle>会将CSS插入在编写位置)。

语法

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

注意

参数首字符不能为/,否则会被认定为服务器路径,导致CSS失效。

禁止出现部分CSS属性:

  • url
  • filter
  • var
  • attr
  • image, image-set
  • expression
  • accelerator
  • -o-link:, -o-link-source:, -o-replace

包含禁止特性的CSS会被替换为:/* insecure input */,导致整段CSS无效。 此检测由Mediawiki的Sanitizer::checkCss方法进行。

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

示例

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

效果:

文字

更多用法

模板中防止多次插入CSS。

  • 代码冗余会影响搜索引擎收录。如果是在被大量使用的模板中重复载入CSS,可能会导致页面异常。
{{#if:{{#varexists:防止多次加载CSS_XXX}} | |{{#vardefine:防止多次加载CSS_XXX|1}} {{#css:
/* css代码 */
}}}}

此模式通过判断变量是否定义,来判断变量名对应的CSS是否加载。

类似的,bstyle标签也可以使用这种写法:

{{#if:{{#varexists:页面内同一变量名中的CSS只会载入一次}} || {{#vardefine:页面内同一变量名中的CSS只会载入一次 | 1 }}<bstyle>/*<pre>*/
/* css代码 */
/*</pre>*/</bstyle>}}


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:设置不替换已经存在默认排序键,可用于禁止后续的#defaultsort覆盖。
    • noerror:不显示错误信息,用于阻止多次使用#defaultsort的报错。

示例

比如在页面史密斯专员中设置其排序位置为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}}8681427
  • 溢出可能导致未预期报错:{{#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;


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}} → male text (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简介|获取帮助}}

开始编辑后,你一定会遇到很多问题。这大多可以通过搜索、查阅文档解决。

如果你嫌弃百度的搜索体验差,可以尝试必应国际版或Google搜索。如果中文搜不到,可以尝试使用英文。

当你不知道如何搜索,或者超过15分钟无法解决问题,请大胆去提问吧!BWiki社区有大量小伙伴,永远不用担心问不到人。

在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}} → 13
  • {{NUMBERINGROUP:bot}} → 1
  • {{NUMBERINGROUP:bureaucrat}} → 8
  • {{NUMBERINGROUP:interface-admin}} → 22
  • {{NUMBERINGROUP:sysop}} → 19


NUMBEROFACTIVEUSERS

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

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

语法

{{NUMBEROFACTIVEUSERS}}

示例

{{NUMBEROFACTIVEUSERS}} → 9


NUMBEROFADMINS

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

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

语法

{{NUMBEROFADMINS}}

示例

{{NUMBEROFADMINS}} → 19


NUMBEROFARTICLES

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

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

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

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

语法

{{NUMBEROFARTICLES}}

示例

{{NUMBEROFARTICLES}} → 166


NUMBEROFEDITS

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

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

语法

{{NUMBEROFEDITS}}

示例

{{NUMBEROFEDITS}} → 17,485


NUMBEROFFILES

文件数量。MediaWiki原生支持。


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

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

语法

{{NUMBEROFFILES}}

示例

{{NUMBEROFFILES}} → 191


NUMBEROFPAGES

页面数量。MediaWiki原生支持。

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

语法

{{NUMBEROFPAGES}}

示例

{{NUMBEROFPAGES}} → 2,462


NUMBEROFPAGEVIEWS

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

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

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

语法

{{NUMBEROFPAGEVIEWS}}

示例

{{NUMBEROFPAGEVIEWS}} → 923


NUMBEROFUSERS

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

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

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

语法

{{NUMBEROFUSERS}}

示例

  • {{NUMBEROFUSERS}} → 8,681,427
  • {{NUMBEROFUSERS:R}} → 8681427


NUMBEROFVIEWS

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

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

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

语法

{{NUMBEROFVIEWS}}

示例

{{NUMBEROFVIEWS}} → 2,313,694


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: 解析函数 }} → 45
  • {{PAGESINCATEGORY: 解析函数 | files }} → 0
  • {{PAGESINCATEGORY: 热力图 | all }} → 1,037
  • {{PAGESINCATEGORY: 热力图 | all | R }} → 1037
  • {{PAGESINCATEGORY: 热力图 | R | all }} → 1037


PAGESIZE

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

语法

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

示例

  • {{PAGESIZE: 帮助:解析函数 }} → 13,663
  • {{PAGESIZE: 帮助:解析函数 | R }} → 13663
  • {{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

获取指定页面更新日期的日(day),无前导0。

MediaWiki原生支持。

格式
{{REVISIONDAY}}
{{REVISIONDAY: 词条名}}
【高开销】
例子
{{REVISIONDAY}}
13
{{REVISIONDAY: Test}}
22
{{REVISIONDAY: 首页}}
2
{{REVISIONDAY: 模板:面包屑}}
11
实际用例
一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时仅供批判性参考

revisionday2

获取指定页面更新日期的日(day),有前导0(如06)。

MediaWiki原生支持。

格式
{{REVISIONDAY2}}
{{REVISIONDAY2: 词条名}}
【高开销】
例子
{{REVISIONDAY2}}
13
{{REVISIONDAY2: Test}}
22
{{REVISIONDAY2: 首页}}
02
{{REVISIONDAY2: 模板:面包屑}}
11


revisionid

获取页面最新的修订ID。

修订ID是一个wiki站点对每次编辑按顺序分配的唯一标识。更大的revisionid代表着更近更新的编辑。

MediaWiki原生支持。

格式
{{REVISIONID}}
{{REVISIONID: 词条名}}
【高开销】
例子
{{REVISIONID}}
51827
{{REVISIONID: 首页}}
51899
不存在的页面返回空
{{REVISIONID: 不存在的233333333333}}
实际用例
一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时仅供批判性参考

revisionmonth

获取指定页面更新日期中的月,有前导零(即01月)。

MediaWiki原生支持。

格式
{{REVISIONMONTH}}
{{REVISIONMONTH|页面名}}
【高开销】
例子
{{REVISIONMONTH}}
04
{{REVISIONMONTH: 首页}}
05
实际用例
一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时仅供批判性参考

revisionmonth1

获取指定页面更新日期中的月,无前导零(即1月)。

MediaWiki原生支持。

格式
{{REVISIONMONTH1}}
{{REVISIONMONTH1|页面名}}
【高开销】
例子
{{REVISIONMONTH1}}
4
{{REVISIONMONTH1: 首页}}
5


revisiontimestamp

获取指定页面更新时间的时间戳,格式:YYYYMMDDHHMMSS

MediaWiki原生支持。

格式
{{REVISIONTIMESTAMP}}
{{REVISIONTIMESTAMP: 页面名}}
【高开销】
例子
{{REVISIONTIMESTAMP}}
20250413203215
{{REVISIONTIMESTAMP: 首页}}
20250502003143
实际用例
一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时仅供批判性参考

revisionuser

获取指定页面最后编辑的用户名(bid,B站用户唯一标识)。

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

比如对于bid 39886146的用户,可以通过https://space.bilibili.com/39886146访问一个人的B站用户页。 也可以通过B站/BWiki的API查询获取用户的公开信息。

MediaWiki原生支持。

格式
{{REVISIONUSER}}
{{REVISIONUSER: 页面名}}
例子
{{REVISIONUSER}}
39886146
{{REVISIONUSER: 首页}}
3546653302721147
实际用例
一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时仅供批判性参考

revisionyear

获取指定页面最近更新日期的年,如:2024。

MediaWiki原生支持。

格式
{{REVISIONYEAR}}
{{REVISIONYEAR: 页面名}}
【高开销】
例子
{{REVISIONYEAR}}
2025
{{REVISIONYEAR: 首页}}
2025
实际用例
一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时仅供批判性参考

rmatch

基于正则表达式匹配文本

正则表达式对任何字符都敏感,包括空格。

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

出自扩展 RegexFunctions

格式
{{#rmatch:string|pattern|then|else}}
{{#rmatch:源字符串|正则表达式|匹配|不匹配}}
例子
{{#rmatch: toolswiki是WIKI实验室|\w+|匹配|不匹配}}
匹配
{{#rmatch: toolswiki是WIKI实验室| \w+ |匹配|不匹配}}
不匹配(由于表达式中包含了空格导致匹配失败,因为空格也属于表达式的一部分)
{{#rmatch: toolswiki是WIKI实验室|([a-z]+)|$1}}
toolswiki
实际用例
一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时仅供批判性参考

rootpagename

对于子页面,获取根页面名(不包括命名空间)。

MediaWiki原生支持。

格式
{{ROOTPAGENAME}}
例子
当前页
{{ROOTPAGENAME}}
→ 解析函数
对于“帮助:Title/foo/bar” 页面
{{ROOTPAGENAME}}
Title
实际用例
一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时仅供批判性参考

rootpagenamee

对于子页面,获取URL编码的根页面名(不包括命名空间)。

MediaWiki原生支持。

格式
{{ROOTPAGENAMEE}}
例子
当前页
{{ROOTPAGENAMEE}}
→ %E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0
对于“帮助:点点/赛/高” 页面
{{ROOTPAGENAMEE}}
%E7%82%B9%E7%82%B9 (点点的URL编码)


rpos

基于正则表达式匹配文本

正则表达式对任何字符都敏感,包括空格。

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

出自扩展 RegexFunctions

格式
{{#rmatch:string|pattern|then|else}}
{{#rmatch:源字符串|正则表达式|匹配|不匹配}}
例子
{{#rmatch: toolswiki是WIKI实验室|\w+|匹配|不匹配}}
匹配
{{#rmatch: toolswiki是WIKI实验室| \w+ |匹配|不匹配}}
不匹配(由于表达式中包含了空格导致匹配失败,因为空格也属于表达式的一部分)
{{#rmatch: toolswiki是WIKI实验室|([a-z]+)|$1}}
toolswiki
实际用例
一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时仅供批判性参考

rreplace

基于正则表达式替换文本

正则表达式对任何字符都敏感,包括空格。

(疑似每个页面只能生效20次?待验证)

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

出自扩展 RegexFunctions

格式
{{#rreplace:string|pattern|replacement}}
{{#rreplace:源字符串|正则表达式|替换文本}}
例子
{{#rreplace:bilibiliBWIKIbilibili|bilibili|哔哩哔哩}}
哔哩哔哩BWIKI哔哩哔哩
  • 这个例子中,将待处理文本中的所有“bilibili”替换成了“哔哩哔哩”。
{{#rreplace:bilibiliBWIKIbilibili|(b
{{!}}
l)|replacement=
<span style="color:red">\1</span>
}}
bilibiliBWIKIbilibili
  • 这个例子中,将待处理的文本通过正则表达式,把bl处理成红色标记。
{{#rreplace:bilibiliBWIKIbilibili|(KI)|replacement=
<span style="color:red">${1}1</span>
}}
bilibiliBWIKI1bilibili
  • 这个例子中,将待处理的文本通过正则表达式,把KI替换成了KI1并标红。由于$11表示的是第11个匹配的内容,并不是我们想要的正确表达式,所以这里需要将$11写成${1}再加上添加的1,即${1}1
实际用例
一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时仅供批判性参考

rsplit

基于正则表达式分割字符串,并返回指定片段。

正则表达式对任何字符都敏感,包括空格。

片段序号从左往右数为0开始的正整数,从右往左数则为-1开始的负整数。

出自扩展 RegexFunctions

格式
{{#rsplit:string|pattern|piece}}
{{#rsplit:源字符串|正则表达式}}
{{#rsplit:源字符串|正则表达式|片段序号}}
例子
{{#rsplit:One Two Three Four|\s+}}
One
{{#rsplit:One Two Three Four|\s+|1}}
Two
{{#rsplit:One Two Three Four|\s+|2}}
Three
{{#rsplit:One Two Three Four|\s+|-1}}
Four


S

seo

设置页面的SEO(搜索引擎优化)信息,如title和meta标签内容。

出自扩展 WikiSEO

格式
{{#seo:|title=页面标题}}
{{#seo:|title=页面标题|title_mode=replace / prepend / append}}
标题位置。replace是替换(默认),prepend是前置增加,append是追加。
{{#seo:|title=页面标题|title_mode=prepend|title_separator=<<}}
title_separator是分隔符,位于前置/追加的标题与原标题中间的分割。默认是 -
{{#seo:|keywords=Apple, Pears, Oranges}}
页面关键词,以半角逗号分割
{{#seo:|description=This page contains information about...}}
页面简述
实际用例
一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时仅供批判性参考

set

出自Semantic Mediawiki。请参见帮助:SMW#set

set_recurring_event

出自Semantic Mediawiki。请参见帮助:SMW#set_recurring_event

show

出自Semantic Mediawiki。请参见帮助:SMW#show

smwdoc

出自Semantic Mediawiki。请参见帮助:SMW#smwdoc

special

指定的特殊页面在当前语言中的全名(包含命名空间)。

MediaWiki原生支持。

格式
{{#special: 页面名称}}
例子
{{#special: 特殊页面}}
特殊:特殊页面
{{#special: specialpages}}
特殊:特殊页面
{{#special: ask}}
特殊:询问
{{#special: ExpandTemplates}}
特殊:展开模板
{{#special: 2333333333}}
特殊:2333333333 (不存在的特殊页面)


speciale

指定的特殊页面在当前语言中的全名(包含命名空间),并以URL编码。

MediaWiki原生支持。

格式
{{#speciale: 页面名称}}
例子
{{#speciale: 特殊页面}}
%E7%89%B9%E6%AE%8A:%E7%89%B9%E6%AE%8A%E9%A1%B5%E9%9D%A2
{{#speciale: specialpages}}
%E7%89%B9%E6%AE%8A:%E7%89%B9%E6%AE%8A%E9%A1%B5%E9%9D%A2
{{#speciale: ask}}
%E7%89%B9%E6%AE%8A:%E8%AF%A2%E9%97%AE
{{#speciale: ExpandTemplates}}
%E7%89%B9%E6%AE%8A:%E5%B1%95%E5%BC%80%E6%A8%A1%E6%9D%BF
{{#speciale: 2333333333}}
%E7%89%B9%E6%AE%8A:2333333333 (不存在的特殊页面)
{{#speciale: 一个GPT助手}}
%E7%89%B9%E6%AE%8A:%E4%B8%80%E4%B8%AAGPT%E5%8A%A9%E6%89%8B (不存在的特殊页面)


sub

字符串截取

出自扩展 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.”

格式
{{#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:Icecream|3|0}}
cream
如果'起始位置'参数指定的位置,落在负的'长度'参数所略去的字符上,则会返回空字串:
{{#sub:Icecream|3|-6}}
(空字串)
此函数兼容UTF-8多字节字符,如:
{{#sub:Žmržlina|3}}
žlina
如同len一样,
<nowiki>
等标签扩展,不计长度,也不占'位置',如:
{{#sub:
<nowiki>This is a</nowiki>
test|0}}
test


实际用例
一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时仅供批判性参考

subjectpagename

获取讨论页对应的内容页面名,带命名空间。

镜像功能是TALKPAGENAME(获取页面对应的讨论页面名)

SUBJECTPAGENAME与ARTICLEPAGENAME相同。

MediaWiki原生支持。

格式
{{SUBJECTPAGENAME}}
{{SUBJECTPAGENAME: 页面名}}
例子
对于点点的“HiWiki”页面
{{TALKPAGENAME: HiWiki}}
讨论:HiWiki
对于“讨论:HiWiki”页面
{{SUBJECTPAGENAME: 讨论:HiWiki}}
HiWiki
对于“帮助:解析函数”页面
{{TALKPAGENAME: 帮助:解析函数}}
帮助讨论:解析函数
对于“帮助讨论:解析函数”页面
{{SUBJECTPAGENAME: 帮助讨论:解析函数}}
帮助:解析函数
实际用例
一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时仅供批判性参考

subjectpagenamee

获取讨论页对应的内容页面名,带命名空间,以URL编码。

镜像功能是TALKPAGENAMEE(获取页面对应的讨论页面名)

SUBJECTPAGENAMEE与ARTICLEPAGENAMEE相同。

MediaWiki原生支持。

格式
{{SUBJECTPAGENAMEE}}
{{SUBJECTPAGENAMEE: 页面名}}
例子
对于点点的“HiWiki”页面
{{TALKPAGENAMEE: HiWiki}}
%E8%AE%A8%E8%AE%BA:HiWiki (即“讨论:HiWiki”的URL编码)
对于“讨论:HiWiki”页面
{{SUBJECTPAGENAMEE: 讨论:HiWiki}}
HiWiki
对于“帮助:解析函数”页面
{{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
对于“帮助讨论:解析函数”页面
{{SUBJECTPAGENAMEE: 帮助讨论:解析函数}}
%E5%B8%AE%E5%8A%A9:%E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0


subjectspace

在讨论页获取内容页面的命名空间名。主命名空间为空。镜像功能是TALKSPACE

MediaWiki原生支持。

格式
{{SUBJECTSPACE: 讨论页名称}}
例子
{{SUBJECTSPACE: 帮助讨论:解析函数}}
帮助
{{SUBJECTSPACE: 讨论:解析函数}}
对应的
{{TALKSPACE: 解析函数}}
讨论
{{TALKSPACE: 帮助:解析函数}}
帮助讨论
实际用例
一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时仅供批判性参考

subjectspacee

在讨论页获取内容页面的命名空间名,并以URL编码。主命名空间为空。镜像功能是 TALKSPACEE

MediaWiki原生支持。

格式
{{SUBJECTSPACEE: 讨论页名称}}
例子
{{SUBJECTSPACEE: 帮助讨论:解析函数}}
%E5%B8%AE%E5%8A%A9 (帮助)
{{SUBJECTSPACEE: 讨论:解析函数}}
对应的
{{TALKSPACEE: 解析函数}}
%E8%AE%A8%E8%AE%BA (讨论)
{{TALKSPACEE: 帮助:解析函数}}
%E5%B8%AE%E5%8A%A9%E8%AE%A8%E8%AE%BA (帮助讨论)


subobject

出自Semantic Mediawiki。请参见帮助:SMW#subobject

subpagename

获取子页面标题。例如“Help:Title/foo/bar”会返回“bar”。

MediaWiki原生支持。

格式
{{SUBPAGENAME}}
{{SUBPAGENAME: 页面名}}
例子
{{SUBPAGENAME: Help:Title/foo/bar}}
bar


实际用例
一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时仅供批判性参考


subpagenamee

获取子页面标题,以URL编码。例如“Help:Work/toki/托奇”会返回“%E6%89%98%E5%A5%87”。

MediaWiki原生支持。

格式
{{SUBPAGENAMEE}}
{{SUBPAGENAMEE: 页面名}}
例子
{{SUBPAGENAMEE: Help:Title/foo/bar}}
bar
{{SUBPAGENAMEE: Help:Work/toki/托奇}}
%E6%89%98%E5%A5%87 (托奇)


switch

多分支语句,类似于编程语言中的switch。

其第一个参数是要进行条件判断的表达式或值。后续的参数是一系列的条件和对应的结果。

出自扩展 ParserFunctions

格式
{{#switch: 表达式|case1 = 结果1|case2 = 结果2|case3 = 结果3|...|caseN = 结果N|默认}}
{{#switch: 表达式|case1 = 结果1|case2 = 结果2|case3 = 结果3|...|caseN = 结果N|#default = 默认}}
例子
{{#switch: baz|foo = Foo|baz = Baz|Bar}}
Baz
{{#switch: foo|foo = Foo|baz = Baz|Bar}}
Foo
{{#switch: zzz|foo = Foo|baz = Baz|Bar}}
Bar
#switch和部分转换标签可以作用于配置文件,从而可以使不熟悉模板代码的编辑者编辑可配置元素。
关于默认结果
在当没有'情况字串'与'比较字串'相符时,会返回'默认结果':
{{#switch: test|foo = Foo|baz = Baz|Bar}}
Bar
按这个函数的句法,'默认结果'必须是最后一个参数,并且不能包含原始等号符。
{{#switch: test|Bar|foo=Foo|baz=Baz}}
{{#switch: test|foo=Foo|baz=Baz|B=ar}}
或者'默认结果'可以用'情况字串'#default来特别声明。
用这种方式声明的'默认结果'可以放在函数内的任何位置:
{{#switch: test|foo=Foo|#default=Bar|baz=Baz}}
Bar
如果'默认结果'被省略,当没有相符情况时,不会返回结果:
{{#switch: test|foo=Foo|baz=Baz}}
一组情况的结果
可以使用“fallthrough”值,即若干'情况字串'返回相同的'返回结果'。这能减少重复。
{{#switch: 比较字串
 |情况字串1 = 返回结果1
 |情况字串2
 |情况字串3
 |情况字串4 = 返回结果234
 |情况字串5 = 返回结果5
 |情况字串6
 |情况字串7 = 返回结果67
 |#default = 默认结果
}}
在这里情况2、3、4都会返回“返回结果234”,情况6、7都会返回“返回结果67”。
关于比较
#ifeq相同,如果'比较字串'和'情况字串'都为数值,则会按照数值进行比较。以上情况外,区分大小写:
{{#switch: 0 + 1|1 = one|2 = two|three}}
three
{{#switch:
{{#expr: 0 + 1}}
|1 = one|2 = two|three}}
one
{{#switch: a|a = A|b = B|C}}
A
{{#switch: A|a = A|b = B|C}}
C
'情况字串'可以是空:
{{#switch:|= Nothing|foo = Foo|Something}}
Nothing
当出现一个相符情况后,之后的'情况字串'会被忽略:
{{#switch: b|f = Foo|b = Bar|b = Baz|}}
Bar
注意
#switch#ifeq的数值比较方法与#ifexpr比较不同:
{{#switch: 12345678901234567|12345678901234568 = A|B}}
B
{{#ifexpr: 12345678901234567 = 12345678901234568|A|B}}
A
具体见ifeq处的第一条“注意”。
关于原始等号符
'情况字串'不能包含原始等号符。为了解决这个问题,创建了一个只包含一个等号符=的模板
{{=}}
应用的例子:
{{#switch: 1=2
 |1=2 = raw
 |1
<nowiki>=</nowiki>
2 = nowiki
 |1
{{=}}
2 = template
 |1&#61;2 = html
 |default
}}

template

关于替换#ifeq
#switch可以用来减少扩展深度。
比如:
{{#switch:
{{{1}}}
|情况1=分支1|情况2=分支2|情况3=分支3|分支4}}
等价于:
{{#ifeq:
{{{1}}}
|情况1|分支1|
{{#ifeq:
{{{1}}}
|情况2|分支2|
{{#ifeq:
{{{1}}}
|情况3|分支3|分支4}}
}}
}}
写成便于阅读的格式即为:
{{#ifeq:
{{{1}}}
|情况1
 |
<!--then-->
分支1
 |
<!--else-->
{{#ifeq:
{{{1}}}
|情况2
 |
<!--then-->
分支2
 |
<!--else-->
{{#ifeq:
{{{1}}}
|情况3
 |
<!--then-->
分支3
 |
<!--else-->
分支4
}}

}}

}}


实际用例
一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时仅供批判性参考


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 月份号,无前导零。 5
    m 月份号,有前导零。 05
    M 月份名称缩写,使用网站语言。(英文结果为 May 5月
    F 月份名称全称,使用网站语言。(英文结果为 May 5月
    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 规定的周数,有前导零。 19
    j 月份内的日期号,无前导零。 11
    d 月份内的日期号,有前导零。 11
    z 年份内的日期号 (1月1日 = 0)。
    注意:要获得 ISO 规定的日期号,需加上1。
    130
    D 星期的缩写。国际上不通用。
    l 星期的全称。国际上不通用。 星期日
    N ISO 8601 规定的星期编号(星期一 = 1,星期日 = 7)。 7
    w 星期编号(星期日 = 0,星期六 = 6)。 0
    a 早上为 am(00:00:00 → 11:59:59);
    其他时间为 pm(12:00:00 → 23:59:59)。
    pm
    A 上方 a 的大写形式。 PM
    g 12小时制的时,无前导零。 9
    h 12小时制的时,有前导零。 09
    G 24小时制的时,无前导零。 21
    H 24小时制的时,有前导零。 21
    分 和 秒
    i 小时后的分钟数,有前导零。 16
    s 分钟后的秒钟数,有前导零。 23
    U UNIX时间(Unix time)。从格林尼治时间(GMT)1970年1月1日00:00:00开始计的秒钟数。 1746998183
    时区(需 MediaWiki 1.22wmf2
    e 时区标识符。 UTC
    I 当前日期是否使用日光节约时间(夏令时)。 0
    O 与格林尼治时间(GMT)的时差。 +0000
    P 与格林尼治时间(GMT)的时差,带有冒号分隔。 +00:00
    T 时区缩写。 UTC
    Z 以秒计的时差。 0
    杂项
    t 当前月份的天数。 31
    c ISO 8601 格式的日期,等价于 Y-m-d"T"H:i:s+00:00 2025-05-11T21:16:23+00:00
    r RFC 5322 格式的日期,等价于 D, j M Y H:i:s +0000,其中星期名和月份名国际上不通用。 Sun, 11 May 2025 21:16:23 +0000
    非公历日历
    伊斯兰历(Islamic calendar),又称 希吉来历(Hijri calendar)
    xmj 月份内的日期号。 13
    xmF 月份名称全称。 都尔喀尔德月
    xmn 月份号。 11
    xmY 全长表示的年。 1446
    伊朗历(Iranian calendar),又称 贾拉利历(Jalali calendar)
    xij 月份内的日期号。 21
    xiF 月份名称全称。 Ordibehesht
    xin 月份号。 2
    xiY 全长表示的年。 1404
    xiy 2位数表示的年。 04
    希伯来历(Hebrew calendar
    xjj 月份内的日期号。 13
    xjF 月份名称全称。 以珥月
    xjt 当前月份的天数。 29
    xjx 属格形式的月份名称。 Iyar
    xjn 月份号。 8
    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}}
    x9x被原样输出,g被当作格式控制代码)
    {{#time: Y-m-d}}
    2025-05-11
    {{#time:
    [[Y]]
    m d}}
    2025 05 11
    {{#time:
    [[Y (year)]]
    }}
    2025 (25UTCpmSun, 11 May 2025 21:16:23 +0000) (year被当作格式控制代码year
    {{#time:
    [[Y "(year)"]]
    }}
    2025 (year)
    {{#time: i's"}}
    16'23"
    '日期/时间对象'可以使用任何PHP中strtotime()函数支持的格式。可以使用绝对时间(如20 December 2000)和相对时间(如+20 hours):
    {{#time: r|now}}
    Sun, 11 May 2025 21:16:24 +0000
    {{#time: r|+2 hours}}
    Sun, 11 May 2025 23:16:24 +0000
    {{#time: r|now + 2 hours}}
    Sun, 11 May 2025 23:16:24 +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}}
    1746998184
    {{#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 11 00:00:00 (使用了一天的开始时刻,填补了当前月份内的日期号、年份)
    {{#time: Y m d H:i:s|2003}}
    2003 05 11 00:00:00 (使用了一天的开始时刻,填补了当前年份内的日期号)
    在MediaWiki r86805之后,4位数字一概会被认为是年份,而非小时与分钟:
    {{#time: Y m d H:i:s|1959}}
    1959 05 11 00:00:00
    6位数字会被认为是小时、分钟和秒钟,如果得到的时间不正确,则会报错(一概不会当作年份和月份):
    {{#time: Y m d H:i:s|195909}}
    2025 05 11 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 4月
    #time中'格式字串'的总长度限制为6000字符
    关于时区
    解析函数#time中有一个bug(更确切的说是PHP日期时间的bug),不允许传入非整数的相对时差。这个问题在整点时区不会出现,如东部夏令时间(EDT):
    {{#time:g:i A|-4 hours}}
    5:16 PM
    但是,委内瑞拉(委内瑞拉标准时间,VET)与世界协调时间(UTC)的时差是-4.5小时,如果直接输入则不会得到正确的结果,如下:
    {{#time:g:i A|-4.5 hours}}
    6:16 AM
    可以将时差转换为分钟或者秒钟来解决这个问题:
    {{#time:g:i A|-270 minutes}}
    4:46 PM
    {{#time:g:i A|-16200 seconds}}
    4:46 PM
    (上述方法由此函数开发者 Tim Starling 提供)


    timel

    与time一致,默认使用当地时间(在'日期/时间对象'留空时)。

    出自扩展 ParserFunctions

    例子
    {{#time: Y-m-d}}
    2025-05-11 (世界协调时间,UTC)
    {{#timel: Y-m-d}}
    2025-05-12 (北京时间,UTC+8)
    {{#time: Y F d H:i:s}}
    2025 5月 11 21:16:23 (世界协调时间,UTC)
    {{#timel: Y F d H:i:s}}
    2025 5月 12 05:16:23 (北京时间,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