社区文档构建进行中,欢迎编辑。社区答疑群(非官方):717421103
帮助:解析函数
本页旨在介绍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>;竖线|,被用于分隔两个参数,此时需要用“{{!}}”。
- 第三方扩展提供了大量解析函数,它们的细节特性可能不同:
A
anchorencode
将文本编码为锚点格式。MediaWiki原生支持。
常用于在模板中处理锚点相关的参数。创建链接时,可保证锚点被正确编码。
- 官方文档:帮助:魔术字 - URL数据
- 完整文档:帮助:解析函数/anchorencode - 更多示例、背景知识、底层代码和实战用例
语法
{{anchorencode:文本}}
示例
示例 | 效果 | |
---|---|---|
基本 |
|
|
部分符号被编码 |
|
|
编码锚点 | [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
- none - 不排序(默认)
- desc - 降序(基于PHP函数,参见 https://php.net/function.sort )
- asce/asc - 升序(参见 https://php.net/function.rsort )
- random - 随机(参见 https://php.net/function.array-rand )
- reverse - 倒序(参见 https://php.net/function.array-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
更多背景知识、底层代码和实战用例,请参阅帮助:解析函数/arraydefine。
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扩展定义的数组。
- 官方文档:Extension:Arrays - arrayreset
- 完整文档:帮助:解析函数/arrayreset - 更多示例、背景知识、底层代码和实战用例
语法
- 删除指定数组:
{{#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开始)。没有则返回空。
能额外指定搜索开始位置,和搜索成功或失败时的返回值。
- 官方文档:Extension:Arrays - arraysearch
- 完整文档:帮助:解析函数/arraysearch - 更多示例、背景知识、底层代码和实战用例
语法
{{#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新的并行解析器不兼容,请参阅扩展主页了解更多信息。。
创建一个新数组,包括指定数组中所有符合条件的元素。搜索条件支持正则表达式。
支持指定搜索起始位置和最大结果数量。当搜索条件是正则时,可以额外指定结果的转换规则。
- 官方文档:Extension:Arrays - arraysearcharray
- 完整文档:帮助:解析函数/arraysearcharray - 更多示例、背景知识、底层代码和实战用例
语法
{{#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-bule1、pre-add1
|
删除空值 | {{#arraysearcharray:a|a|/\S+/}} -> apple、bule1、fly、add1、wiki
|
arraysize
获取数组的大小(元素个数)。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。。
数组不存在时返回空字符串,可用于判断数组是否存在。
- 官方文档:Extension:Arrays - arraysize
- 完整文档:帮助:解析函数/arraysize - 更多示例、背景知识、底层代码和实战用例
语法
{{#arraysize: 数组名 }}
示例
{{#arraysize:a}}
→ 数组a中的元素个数{{#if: {{#arraysize:b}} | ''array exists'' | ''array not defined'' }}
→ 检查一个数组是否存在
arrayslice
数组切片。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。。
从数组的指定位置开始,提取指定长度的片段,存入新数组。
- 官方文档:Extension:Arrays - arrayslice
- 完整文档:帮助:解析函数/arrayslice - 更多示例、背景知识、底层代码和实战用例
语法
{{#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新的并行解析器不兼容,请参阅扩展主页了解更多信息。。
- 官方文档:Extension:Arrays - arraysort
- 完整文档:帮助:解析函数/arraysort - 更多示例、背景知识、底层代码和实战用例
语法
{{#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、3、6、5、11、2、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新的并行解析器不兼容,请参阅扩展主页了解更多信息。。
将多个数组合并,存到新数组中。合并时不保留重复值。
- 官方文档:Extension:Arrays - arrayunion
- 完整文档:帮助:解析函数/arrayunion - 更多示例、背景知识、底层代码和实战用例
语法
{{#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新的并行解析器不兼容,请参阅扩展主页了解更多信息。。
仅保留数组中非重复、非空值。
- 官方文档:Extension:Arrays - arrayunique
- 完整文档:帮助:解析函数/arrayunique - 更多示例、背景知识、底层代码和实战用例
语法
{{#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限制细节也有不同。配置细节可能随平台负载调整,需以实际表现为准。
- 官方文档:Help:Inline queries
- 实战用例:帮助:解析函数/ask 1000+ 使用#ask的模板,SMW 代码库链接
- 灰机wiki:帮助:Semantic MediaWiki
- 灰机wiki:帮助:Semantic MediaWiki/嵌入式查询
autoedit
创建一个链接,点击自动编辑提交表单。出自扩展 Page Forms。
尚未发现使用此解析函数的BWiki。
B
BASEPAGENAME
获取上级页面名,不含命名空间。MediaWiki原生支持。
仅对启用子页面特性的命名空间生效(主、用户、项目、Mediawiki、模板、帮助、模块空间均支持。注意,文件、分类、Widget等空间不支持)。
- 官方文档:Help:Magic words - Page names
- 完整文档:帮助:解析函数/basepagename - 更多示例、背景知识、底层代码和实战用例
语法
{{BASEPAGENAME}}
针对当前页面{{BASEPAGENAME: 页面名}}
可指定页面
示例
{{BASEPAGENAME}}
→ 解析函数{{BASEPAGENAME:帮助:解析函数/basepagename}}
→解析函数
{{BASEPAGENAME:模板:大模板/中模板/小模板}}
→大模板/中模板
{{BASEPAGENAME:分类:超大分类/大分类/中分类}}
→超大分类/大分类/中分类
(分类空间不支持子页面特性,因此这一页面是独立页面,不被视为“超大分类”的子页面)
BASEPAGENAMEE
获取上级页面名(URL编码),不含命名空间。MediaWiki原生支持。
仅对启用子页面特性的命名空间生效(主、用户、项目、Mediawiki、模板、帮助、模块空间均支持。注意,文件、分类、Widget等空间不支持)。
- 官方文档:Help:Magic words - Page names
- 其他细节与
{{BASEPAGENAME}}
相同,请参考:帮助:解析函数/basepagename - 更多示例、背景知识、底层代码和实战用例
语法
{{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)。
- 官方文档:Help:Magic_words - Formatting
- 完整文档:帮助:解析函数/bidi - 底层代码
语法
{{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:}}
-> 2024-12-01
- 注意其末尾需要冒号。
示例
查询当前月份的活动,以日历格式显示。
{{#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-01-05
注意
- 其末尾需要冒号。
- 日历结束日期不一定是当月最后一天。因为日历格式以周为单位显示。
示例
查询当前月份的活动,以日历格式显示。
{{#ask:
[[Category:Events]]
[[Has date::>{{#calendarstartdate:}}]]
[[Has date::<{{#calendarenddate:}}]]
|?Has date
|format=calendar
|limit=300
}}
canonicalurl
获取页面完整URL,支持附加请求参数。MediaWiki原生支持。
- 官方文档:Help:Magic_words - URL_data
- 完整文档:帮助:解析函数/canonicalurl - 更多示例、背景知识、底层代码和实战用例
语法
{{canonicalurl: 页面名 | 参数 }}
- 不会校验页面和参数是否存在。
- 多个参数需要手动处理,如示例所示。
- 相关函数是
canonicalurle
,它会编码这些HTML实体:<>"&
→<>"&
示例
- 指定页面链接:
{{canonicalurl: 帮助 }}
→https://wiki.biligame.com/tools/%E5%B8%AE%E5%8A%A9
- 带一个参数:
{{canonicalurl: 帮助 | action=edit }}
→https://wiki.biligame.com/tools/index.php?title=%E5%B8%AE%E5%8A%A9&action=edit
- 带多个参数:
{{canonicalurl: 帮助 | action=edit&arg=233 }}
→https://wiki.biligame.com/tools/index.php?title=%E5%B8%AE%E5%8A%A9&action=edit&arg=233
canonicalurle
获取页面完整URL,支持附加请求参数。MediaWiki原生支持。
会编码这些HTML实体:<>"&
→ <>"&
语法
{{canonicalurle: 页面名 | 参数 }}
- 不会校验页面和参数是否存在。
- 多个参数需要手动处理,如示例所示。
- 它会编码这些HTML实体:
<>"&
→<>"&
示例
- 指定页面链接:
{{canonicalurle: 帮助 }}
→https://wiki.biligame.com/tools/%E5%B8%AE%E5%8A%A9
- 带一个参数:
{{canonicalurle: 帮助 | action=edit }}
→https://wiki.biligame.com/tools/index.php?title=%E5%B8%AE%E5%8A%A9&action=edit
- 带多个参数:
{{canonicalurle: 帮助 | action=edit&arg=233 }}
→https://wiki.biligame.com/tools/index.php?title=%E5%B8%AE%E5%8A%A9&action=edit&arg=233
CASCADINGSOURCES
返回特定页面连锁保护的来源页面。
特殊情况:如果保护页面自己嵌入自己,会返回自身。
语法
{{CASCADINGSOURCES}}
{{CASCADINGSOURCES: 页面名 }}
支持指定页面
示例
本Wiki有几个页面被保护了:
- 保护页面示例 被设置了级联保护,让子页面保护页面示例/子页面被级联保护
- 保护页面示例2 被设置了级联保护,且嵌入了保护页面示例/子页面,让这个子页面被级联保护
例子:
{{CASCADINGSOURCES: 帮助:Cascadingsources }}
→(没有被保护)
{{CASCADINGSOURCES: 保护页面示例 }}
→(没有被级联保护)
{{CASCADINGSOURCES: 保护页面示例2 }}
→(没有被级联保护)
{{CASCADINGSOURCES: 保护页面示例/子页面 }}
→保护页面示例|保护页面示例2
(受到两个页面的连锁保护,页面名由竖线隔开)
categorytree
显示分类树,与分类页面相似。出自扩展 CategoryTree。
语法
{{#categorytree:分类|参数1|参数2|...|参数n}}
- 其参数与<categorytree>标签相同,详见文档The Ccategorytree tag
- 参考官方文档和其他文档完善内容
- 增加实际用例和技巧
示例
{{#categorytree:解析函数}}
concept
定义概念。出自扩展 Semantic MediaWiki SMW功能强大,应用广泛。<br>如需单页内大量调用,请考虑使用模板、模块批量查询,这能提升综合体验、降低资源消耗。<br>另请参阅灰机、Fandom的相关文档,他们详述了对SMW的顾虑和限制。。
概念(Concept,一个SMW术语),是通过指定条件创建的“动态类别”。可以将概念看作一组预先存储的SMW查询条件,可供SMW查询调用。
- 官方文档:Help:Concepts
- 完整文档:帮助:解析函数/concept
当概念修改后,使用此概念的SMW查询也会更新(类似于更新页面属性后,SMW查询结果会更新)。
比如,有16处SMW查询包含对同一概念的筛选(如“好武器”,指攻击≥70的特品武器),就可以为其定义一个概念。当查询条件需要修改时(比如改为攻击≥75),仅需修改概念就可以完成对这16处查询的更新。
概念需要在概念命名空间定义(比如概念:好武器
),这与模板、Widget等相似。概念定义后,其页面会像分类页面一样展示符合条件的页面列表。
语法
{{#concept:条件|说明}}
- 条件:SMW查询条件,可以包含其他概念。
- 说明:描述概念的文本
示例
比如将攻击≥70的特品武器称为“好武器”。
在 概念:好武器
页面填入以下内容:
{{#concept: [[类型::武器]][[品级::特品]][[攻击::>70]]
| 特品高攻击武器
}}
基于此,可进行查询:
此后,如果对于“好武器”的评判标准改变了,那么只需要修改 概念:好武器 页面,不必逐个寻找、更新SMW查询条件。
contributors
列出指定页面的贡献者。出自扩展 Contributors。
- 官方文档:Extension:Contributors - Parser function
- 完整文档:帮助:解析函数/contributors - 更多示例、背景知识、底层代码和实战用例
每个贡献者用户名都链接到他的用户页面。
对于BWiki,列出的实际上是用户的B站用户ID(bid)。此外,BWiki会在内容页面头部展示贡献者列表,因此 #contributors 的实际价值不高。
这个解析函数没有被标记为高开销,因此有模板使用它来间接判断页面是否存在,这能绕开页面高开销解析函数的数量限制(BWiki目前是100)。不过仍需注意,此解析函数需要进行数据库查询,本质上对服务器的开销并不低。
语法
{{#contributors:页面名}}
{{#contributors:页面名|filteranon}} 过滤匿名用户,但BWiki不存在匿名编辑。
- 该扩展的特殊页面也可嵌入,如
{{Special:Contributors/页面名}}
示例
{{#contributors:首页}}
→ (39886146)、(123855714)、(9388102)、(16083703)、(509732352)、(29136181)和(111160720)
- 注意,一些小组件会改变用户名的外观
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模块。
- 官方文档:String functions - count
- 完整文档:帮助:解析函数/count - 更多示例、背景知识、底层代码和实战用例
语法
{{#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,887 - 编辑次数:
{{#cscore:39886146|changes}}
→ 7,772 - 编辑页面数量:
{{#cscore:39886146|pages}}
→ 1,732
css
为页面增加CSS。出自扩展 CSS。
向页面添加CSS代码或CSS文件。CSS会被插入HTML的head中(而<bstyle>
会将CSS插入在编写位置)。
- 官方文档:Extension:CSS - Usage
- 平台文档:帮助:引用CSS类样式
- 完整文档:帮助:解析函数/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。
- 官方文档:Extension:Page_Forms - The "edit with form" tab
- 完整文档:帮助:解析函数/default_form - 更多实际用例
语法
{{#default_form:表单名称}}
示例
{{#default_form:角色}}
在页面中指定表单猴,Wiki功能菜单中会多出“采用表单编辑”按钮。
DEFAULTSORT
指定页面排序关键字。MediaWiki原生支持。
为页面设置默认的排序关键字。当页面被索引时,这个关键字将用于排序,确保页面在分类和搜索结果中按照指定顺序显示。
设置分类时指定排序关键字可以覆盖它:[[分类:分类名称|排序关键字]]
- 官方文档:Help:Magic_words - Technical metadata
- 完整文档:帮助:解析函数/defaultsort - 更多示例、背景知识、底层代码和实战用例
语法
{{DEFAULTSORT:文本|选项}}
- 文本:要设置为默认排序键的字符串,需要按顺序显示页面时,将按照此值进行排序。
- 选项:可选参数,可以是以下值之一:
- noreplace:设置不替换已经存在默认排序键,可用于禁止后续的#defaultsort覆盖。
- noerror:不显示错误信息,用于阻止多次使用#defaultsort的报错。
示例
比如在页面史密斯专员
中设置其排序位置为Smith
:
- 设置默认排序键:
{{DEFAULTSORT:Smith}}
- 使用 noreplace 选项:
{{DEFAULTSORT:Smith|noreplace}}
- 使用 noerror 选项:
{{DEFAULTSORT:Smith|noerror}}
DISPLAYTITLE
设置页面显示的标题。MediaWiki原生支持。
允许你在页面中设置自定义的显示标题,而不是默认的页面标题。
比如一些情况下无法用预期的标题创建页面,需要额外的前后缀,或使用ID、英文作为页面名。此时可以通过DISPLAYTITLE使页面显示预期的标题。 此外,页面名有限制,一些符号无法使用。DISPLAYTITLE可用于显示正确的页面名。
- 官方文档:Help:Magic_words - Technical metadata
- 完整文档:帮助:解析函数/displaytitle - 更多示例、背景知识、底层代码和实战用例
语法
{{DISPLAYTITLE:文本|选项}}
- 文本:你希望在页面上显示的标题内容。
- 选项:
noerror
:多次使用时,不显示错误信息。noreplace
:如果已经设置过DISPLAYTITLE,不会替换。
示例
{{DISPLAYTITLE:自定义标题}}
这将使页面的显示标题为“自定义标题”,而不是实际页面标题。{{DISPLAYTITLE:自定义标题|noerror}}
如果是多次使用,不显示错误信息{{DISPLAYTITLE:新标题|noreplace}}
如果之前已经设置DISPLAYTITLE,不替换它(防止覆盖)
dowhile
循环。只要条件wikitext的结果非空白,就会持续循环。出自扩展 Loops。
与#while不同的是,循环体的内容会至少执行一次。
- 官方文档:Extension:Loops - Usage
- 完整文档:帮助:解析函数/dowhile - 更多示例、背景知识、底层代码和实战用例
语法
{{#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。
- 格式
{{#dpl: category = cat1{{!}}cat2 | linksto = {{{1}}} }}
- 例子
<!-- 例子wikitext -->
→
- 文档
- DPL3文档
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
更多内容请参考:帮助:DPL3#dpl
dplchapter
出自扩展DynamicPageList3。 请参考:帮助:DPL3#dplchapter
dplmatrix
出自扩展DynamicPageList3。 请参考:帮助:DPL3#dplmatrix
dplnum
出自扩展DynamicPageList3。 请参考:帮助:DPL3#dplnum
dplreplace
出自扩展DynamicPageList3。 请参考:帮助:DPL3#dplreplace
dplvar
出自扩展DynamicPageList3。 请参考:帮助:DPL3#dplvar
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.”。
使用指定分隔符将字符串分割成多段,并返回指定位置的分割结果。如果指定位置超过分割后的数量,返回空字符串。
- 官方文档:Extension:ParserFunctions - String functions - explode
- 完整文档:帮助:解析函数/explode - 更多示例、背景知识、底层代码和实战用例
语法
{{#explode:文本 | 分隔符 | 位置索引 | 限制 }}
- 文本:要分割的字符串。
- 分隔符:用于分割字符串的分隔符。
- 位置索引:要返回的分割结果的位置索引。从0开始,可以是正数或负数,负数表示从末尾开始计数。
- 限制(可选):分割的最大数量。
示例
{{#explode:apple,banana,cherry | , | 1}}
→ banana{{#explode:one two three four | | -1}}
→four- 使用空格作为分隔符,并且 position 为 -1,表示返回最后一个分割结果 'four'。
{{#explode:alpha-beta-gamma | - | 2}}
→ gamma{{#explode:aaa bbb ccc ddd eee| |2|3}}
→ ccc ddd eee
expr
类型 | 运算符 |
---|---|
组合(括号) | ( )
|
数字 | 1234.5 、 e (2.718) 、 pi (3.142)
|
科学计数法(二元) e 、 正负号(一元) + ,-
| |
一元运算符 | not ceil trunc floor abs exp ln sin cos tan acos asin atan
|
二元运算符 | ^
|
* / div mod
| |
+ -
| |
四舍五入 | round
|
逻辑运算符 | = != <> > < >= <=
|
and
| |
or
|
用于验证一个数学表达式,并返回它的计算值。
出自扩展 ParserFunctions。
此函数在Scribunto扩展中也可用,函数名为mw.ext.ParserFunctions.expr
。
- 格式
{{#expr: 表达式 }}
- 支持的运算符如右方表格所示,表格从上到下按运算符的计算优先顺序排列。
- 每个运算符的详细功能见Help:Calculation。
- 计算结果的精度和格式取决于wiki服务器的操作系统,和网站语言的数字格式。
- 例子
- 当用于计算布尔代数值(Boolean algebra)时,零值表示
false(假)
,任何非零值,无论正负,都表示ture(真)
:{{#expr: 1 and -1 }}
→1
{{#expr: 1 and 0 }}
→0
{{#expr: 1 or -1 }}
→1
{{#expr: -1 or 0 }}
→1
{{#expr: 0 or 0 }}
→0
- 输入空的表达式会返回一个空字串。输入不正确的表达式会返回其中一个错误消息,错误可以被iferror函数捕捉到:
{{#expr: }}
→{{#expr: 1+ }}
→表达式错误:缺少+的操作数。
{{#expr: 1 = }}
→表达式错误:缺少=的操作数。
{{#expr: 1 foo 2 }}
→表达式错误:无法识别的词语“foo”。
- 加减运算符在数字之前与之后的意义不同,它们有可能被当作正负号,而不会被当作不正确的表达式:
{{#expr: +1 }}
→1
{{#expr: -1 }}
→-1
{{#expr: + 1 }}
→1
{{#expr: - 1 }}
→-1
- 注意
- 如果使用魔术字的输出值,必须使用其原始格式,如:移除所有分割逗号,转换为数字。
- 比如
{{NUMBEROFUSERS}}
输出的是7,490,068
,但是实际需要的是7490068
,原始格式可以用{{formatnum:{{NUMBEROFUSERS}}|R}}
来得到,详见formatnum。例子如下:{{#expr:{{NUMBEROFUSERS}}+100}}
→表达式错误:无法识别的符号“,”。
{{#expr:{{formatnum:{{NUMBEROFUSERS}}|R}}+100}}
→7490168
- 注意
- 运算符
mod
会在某些除数值下给出错误的结果:{{#expr: 123 mod (2^64-1)}}
→零除。
(返回空字串,结果本应是123
)
- 补充
- 若想要进行关于日期的计算(比如:将当前日期与某日期进行比较),首先应将时间转化为“1970年1月1日之后多少秒”的结构,可以使用
{{#time: xNU }}
来转换(详见time),然后就可以把日期当作数字来进行计算和比较了。 - 关于四舍五入
- 将运算符
round
左边的数四舍五入(Rounds),使其小数位数为round
右边的数。 - 如需进一取整(向上舍入),使用
ceil
;如需舍去取整(向下舍入),使用floor
。
例子 | 结果 | 舍入方法 |
---|---|---|
{{#expr: 1/3 round 5 }} |
0.33333 | 保留5位小数。舍去的部分首位数值<5,则不会进一。 |
{{#expr: 1/6 round 5 }} |
0.16667 | 保留5位小数。舍去的部分首位数值≥5,则进一。 |
{{#expr: 8.99999/9 round 5 }} |
1 | 同上方法,结果是进一得到的。 |
{{#expr: 1234.5678 round -2 }} |
1200 | 此处保留到百位。要保留到小数点左侧,应使用负的位数。 |
{{#expr: 1234.5678 round 2 }} |
1234.57 | 此处保留到百分位。要保留到小数点右侧,应使用正的位数。 |
{{#expr: 1234.5678 round 2.3 }} |
1234.57 | 位数值如果输入了带小数的数值,小数部分不起作用。 |
{{#expr: trunc 1234.5678 }} |
1234 | 保留到整数可以使用trunc 。
|
保留到整数的舍入规则: | ||
{{#expr: 1/3 round 0 }} |
0 | 保留到最近的整数,向下舍入至零。 |
{{#expr: 1/2 round 0 }} |
1 | 保留到最近的整数,向上舍入至一。 |
{{#expr: 3/4 round 0 }} |
1 | 保留到最近的整数,向上舍入至一。 |
{{#expr: -1/3 round 0 }} |
-0 | 保留到最近的整数,向上舍入至零。 |
{{#expr: -1/2 round 0 }} |
-1 | 保留到最近的整数,向下舍入至负一。 |
{{#expr: -3/4 round 0 }} |
-1 | 保留到最近的整数,向下舍入至负一。 |
使用ceil 和floor 时的舍入规则:
| ||
{{#expr: ceil(1/3) }} |
1 | 向上舍入至一。 |
{{#expr: floor(1/3) }} |
0 | 向下舍入至零。 |
{{#expr: ceil(-1/3) }} |
-0 | 向上舍入至零。 |
{{#expr: floor(-1/3) }} |
-1 | 向下舍入至负一。 |
{{#expr: ceil 1/3 }} |
0.33333333333333 | 没有被舍入处理,因为1 就是整数注意:上述表达式含义为 (ceil 1)/3 ,而不是ceil(1/3) ,应注意。
|
- 关于字符串
- 表达式只能用于数字值,不能比较字串或者字符。如需比较字串和字符,请使用ifeq。例子:
{{#expr: "a" = "a" }}
→表达式错误:无法识别的符号“"”。
{{#expr: a = a }}
→表达式错误:无法识别的词语“a”。
{{#ifeq: a | a | 1 | 0 }}
→1
F
filepath
获取指定文件的路径。
文件名无须包含命名空间,可以选择加上缩略图宽度要求或nowiki防止直接插入图片。
- 格式
{{filepath: 文件名 | 要求 }}
- 例子
{{filepath: Toolswikilogo.png }}
→https://patchwiki.biligame.com/images/tools/4/41/fr3pnybxu6c0xtdypvwbfc5z1i1gcgy.png
{{filepath: Toolswikilogo.png | nowiki }}
→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
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
follow
给定一个页面名,如果是重定向页面,返回重定向目标页面名。否则返回输入的页面名本身。
出自扩展ParserPower。
- 格式
{{#follow: 页面名}}
- 例子
- 设expr页面重定向到“帮助:Expr”:
{{#follow: expr}}
→ 帮助:Expr {{#follow: 首页}}
→ 首页{{#follow: 不存在的页面}}
→ 不存在的页面
forargs
- 参考官方文档和其他文档完善内容
- 增加实际用例和技巧
出自扩展Loops。
- 格式
{{#forargs: <prefix> | <key> | <value> | <block statement> }}
- prefix:参数名的前缀。想要循环处理一系列以特定前缀开头的命名参数时,这个前缀就会派上用场。
- key:循环中当前参数的名称(不包括前缀)。
- value:循环中当前参数的值。
- block statement:每次循环时要执行的wiki文本或模板调用。
- 例子
- 模板:沙盒/forargs:
{{#forargs:参数 |key |value |'''参数'''{{#var:key}} is {{#var:value}}<br> }}
- 使用模板:
{{沙盒/forargs |参数1=Apple |参数2=Banana |参数3=Cherry |其他参数4=此模板中不显示的内容 }}
→- 参数1 is Apple
- 参数2 is Banana
- 参数3 is Cherry
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:家具套装 - 明日方舟
- 模板:切换显示/模板 - 白荆回廊
- 模板:切换显示按钮 - 白荆回廊
- 模板:Tabber - 封印者
- 模板:Tab - 四叶草剧场
- 模板:专武基础 - 四叶草剧场
- 模板:专武等级Tab - 四叶草剧场
- 模板:立绘Tab - 四叶草剧场
- 模板:角色模板专武 - 四叶草剧场
- 模板:角色模板台词 - 四叶草剧场
formatdate
将输入的日期格式化,输入的日期只接受YYYY-MM-DD(ISO 8601,必须都有前导零)的格式,而输出则支持各种格式,包括ISO 8601、dmy、mdy和ymd。如果格式化的时候出现错误,将会原封不动返回输入的日期。
MediaWiki原生函数。
- 格式
{{#formatdate: 日期 | 格式 }}
- 例子
{{#dateformat:2015-08-14|ISO 8601}}
→2015-8-14
{{#dateformat:2015-08-14|dmy}}
→14 8月 2015
{{#dateformat:2015-08-14|mdy}}
→8月 14, 2015
{{#dateformat:2015-08-14|ymd}}
→2015 8月 14
{{#dateformat:2015-08-14|myd}}
→2015-08-14
(不支持的格式){{#dateformat:2015-8-14|myd}}
→2015-8-14
(输入不符合ISO 8601,月份缺少前导零)
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
formatnum
将输入的数字格式化,不输入格式的话默认为一般逗号分隔(其他语言可能有别)的格式,输入R会还原成无格式化的形式,输入NOSEP会去掉逗号(或其他语言中的数字分隔符)。此函数并不会去掉前导零,也不会为小数添加前导零。请不要输入数字以外的东西。
MediaWiki原生函数。
- 格式
{{formatnum: 数字 | 格式 }}
- 例子
{{formatnum: 12345.678 }}
→12,345.678
{{formatnum: 12,345.678 | R }}
→12345.678
{{formatnum: 12,345.678 | NOSEP }}
→12,345.678
{{formatnum: 00145.678 }}
→00,145.678
{{formatnum: .678 }}
→.678
forminput
出自扩展Page Forms
formlink
出自扩展Page Forms
formredlink
出自扩展Page Forms
fornumargs
- 参考官方文档和其他文档完善内容
- 增加实际用例和技巧
出自扩展Loops。
- 格式
{{#fornumargs: <key> | <value> | <block statement> }}
- 例子
<!-- 例子wikitext -->
→
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:导航条
- 模板:面包屑
- 模板:信息表 - CSGO
- 模板:多图标 - CSGO
- 模板:协议 - 我的世界玩家社区
- 模板:切换标签 - 忘却前夜
- 模板:面包屑 - Palworld幻兽帕鲁中文百科
- 模板:施工中 - Starfield
- 模板:卡片 - 风暴工程:建造与救援
- 模板:微控板 - 风暴工程:建造与救援
fullpagename
获取词条全名(包含命名空间)。
MediaWiki原生函数。
- 格式
{{FULLPAGENAME}}
{{FULLPAGENAME: 页面名 }}
- 例子
{{FULLPAGENAME}}
→ 帮助:解析函数{{FULLPAGENAME: 帮助:Fullpagename }}
→ 帮助:Fullpagename{{FULLPAGENAME: a b c }}
→ A b c{{FULLPAGENAME: /a b c }}
→ /a b c
fullpagenamee
获取UEL编码的词条全名(包含命名空间)。
MediaWiki原生函数。
- 格式
{{FULLPAGENAME}}
{{FULLPAGENAME: 页面名 }}
- 例子
{{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
fullurl
- 参考官方文档和其他文档完善内容
- 增加实际用例和技巧
获取页面的URL,可以附加一个请求参数。
获得的URL包含域名,且被URL Encode。这与#fullurle一致(虽然设计上应该仅由fullurle提供Encode版本)。
MediaWiki原生函数。
- 格式
{{fullurl: 词条名}}
{{fullurl: 词条名 | 请求参数 }}
- 例子
{{fullurl: 帮助:解析函数 }}
→https://wiki.biligame.com/tools/%E5%B8%AE%E5%8A%A9:%E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0
{{fullurl: 帮助:解析函数 | action=edit }}
→https://wiki.biligame.com/tools/index.php?title=%E5%B8%AE%E5%8A%A9:%E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0&action=edit
{{fullurl: 帮助:解析函数 | aaa=111 }}
→https://wiki.biligame.com/tools/index.php?title=%E5%B8%AE%E5%8A%A9:%E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0&aaa=111
fullurle
- 参考官方文档和其他文档完善内容
- 增加实际用例和技巧
获取页面的URL(URL Encode),可以附加一个请求参数。与#fullurl行为一致。
MediaWiki原生函数。
- 格式
{{fullurle: 词条名}}
{{fullurle: 词条名 | 请求参数 }}
- 例子
{{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: 帮助:解析函数 | action=edit }}
→https://wiki.biligame.com/tools/index.php?title=%E5%B8%AE%E5%8A%A9:%E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0&action=edit
{{fullurle: 帮助:解析函数 | aaa=111 }}
→https://wiki.biligame.com/tools/index.php?title=%E5%B8%AE%E5%8A%A9:%E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0&aaa=111
G
gender
- 参考官方文档和其他文档完善内容
- 增加实际用例和技巧
根据用户设置的性别称呼输出不同文字。
BWiki中,用户默认称呼是中性,且每一个wiki均独立设置。因此这个Gender在绝大多数情况下没用。
- 格式
{{GENDER:用户名|男性文字|女性文字|中性文字}}
- 例子
{{GENDER:39886146|male text|female text|text for unspecified}}
→ male text (Lu设置了性别称呼为他){{GENDER:39886146|text for unspecified}}
→ text for unspecified{{GENDER:|male text|female text|text for unspecified}}
→ text for unspecified{{GENDER:[INVALID]|male text|female text|text for unspecified}}
→ text for unspecified 本wiki的默认性别称呼是中性。{{GENDER:[INVALID]|male|female}}
→ male 如果不给出中性文字,默认是男性
grammar
根据词形变化代码输出给定的词的正确的词形变化(与语言相关)。语法变形被用于波兰语这样的屈折语。
对于BWiki这样的中文Wiki几乎无用。
- 格式
{{GRAMMAR:N|word}}
- 例子
{{GRAMMAR:elative|wiki}}
→ wikistä (对于芬兰语wiki)
I
if
用于鉴别一个测试字串是否为空。一个只含有空白字符的字串会被判定为空。
出自扩展 ParserFunctions。
- 格式
- {{#if: 测试字串|字串非空输出值|字串空(或只有空白字符)输出值}}
- {{#if: 参数1|参数2|参数3}}
- 说明
- 这个函数首先检查'参数1'是否为空。如果'参数1'不为空,则显示'参数2'。如果'参数1'为空或只含有空白字符(如空格,换行符等),则显示'参数3'。
- 例子
- {{#if:|yes|no}}→
no
- {{#if: string|yes|no}}→
yes
- {{#if: |yes|no}}→
no
- {{#if:→
|yes|no}}no
- 测试字串总是被解释为纯文本,所以数学表达式不会被鉴别。
- {{#if: 1==2|yes|no}}→
yes
- {{#if: 0|yes|no}}→
yes
- 最后一个参数(字串空输出值)可以省略。
- {{#if: foo|yes}}→
yes
- {{#if:|yes}}→
- {{#if: foo||no}}→
- 这个函数可以被嵌套。嵌套时,需用完整格式的
#if
函数,替代外层#if
函数的某个参数。最大可以嵌套七层,具体取决于网站和存储限制。- {{#if: 测试字串1|字串1非空输出值|字串2非空输出值}}
- 可以用一个参数当作#if函数的测试字串。必须在变量名的后面加上管道符
|
。{{#if:{{{1|}}}| 变量1中输入了文本 | 变量1中没有文本 }}
- 对于在模板中的应用,更多例子可参照:Help:Parser functions in templates
ifeq
比较两个字串是否相同。
出自扩展 ParserFunctions。
- 格式
- {{#ifeq: 测试字串1|测试字串2|相同时输出值|不相同时输出值}}
- 例子
- 如果两个字串都是有效的数值,则会按照数值进行比较。
- {{#ifeq: 01|1|equal|not equal}}→
equal
- {{#ifeq: 0|-0|equal|not equal}}→
equal
- {{#ifeq: 1e3|1000|equal|not equal}}→
equal
- {{#ifeq: 1000|1000|equal|not equal}}→
equal
- 否则会按照文本进行比较,区分大小写。
- {{#ifeq: foo|bar|equal|not equal}}→
not equal
- {{#ifeq: foo|Foo|equal|not equal}}→
not equal
- {{#ifeq: "01"|"1"|equal|not equal}}→
not equal
(注意与上方不带引号的区别) - {{#ifeq: 10^3|1000|equal|not equal}}→
not equal
(注意与上方使用了#expr
函数的区别)
- 注意
#ifeq
和#switch
的数值比较与使用#expr
进行比较不同:- {{#ifeq: 12345678901234567|12345678901234568|equal|not equal}}→
not equal
- {{#switch: 12345678901234567|12345678901234568 = equal|not equal}}→
not equal
- 因为PHP以整数型比较两个数字,然而:
- {{#ifexpr: 12345678901234567 = 12345678901234568|equal|not equal}}→
equal
- 因为MediaWiki转换文本数字为浮点型,对于比较大的整数,会导致末尾被舍去。
- 注意
- 在解析函数内部的标签和解析函数(如<nowiki>)会被暂时替换为一个唯一的代码。这会影响到比较结果:
- {{#ifeq:→<nowiki>foo</nowiki>|<nowiki>foo</nowiki>|equal|not equal}}
not equal
- {{#ifeq:→<math>foo</math>|<math>foo</math>|equal|not equal}}
not equal
- {{#ifeq:→{{#tag:math|foo}}|{{#tag:math|foo}}|equal|not equal}}
not equal
- {{#ifeq:→[[foo]]|[[foo]]|equal|not equal}}
equal
- 如果被比较的字串 是由等价调用 含有这类标签的 同一模板 得到的,则值为真;但如果为 含有相同的这类标签的 两个模板,则值为假。
- 注意
- 在用页面名变量(如:{{FULLPAGENAME}})比较当前页面标题时,应小心。这些变量会将特殊字符转换为数字HTML实体。这会造成具有误导性的结果。比如,在一个标题为“L'Aquila”的页面上:
- {{#ifeq: L'Aquila|→{{FULLPAGENAME}}|equal|not equal}}
not equal
- 上面的结果实际是错误的。经过改进之后,现在它会返回“
equal
”。但是对于其他情况可能不会如此。如{{FULLPAGENAME}},在部分网站,可能会将第一个字母替换为大写,可能会将所有下划线替换为空格。 - 为了解决这个问题,可以在两个参数上都应用变量:
- {{#ifeq:→{{FULLPAGENAME: L'Aquila}}|{{FULLPAGENAME}}|equal|not equal}}
equal
iferror
用于分辨输入字串,并返回两个结果中的一个。如果输入字串中含有HTML元素包含class="error"
,则会被当作true(真)
。
class="error"
能由其他解析函数,如expr、time、rel2abs产生,模板(Templates)错误,如循环、递归和其他解析器错误也能产生。
出自扩展 ParserFunctions。
- 格式
- {{#iferror: 测试字串|错误时输出值|正确时输出值}}
- 例子
- 两个'输出值'可省略其一或两者都省略。如果'正确时输出值'被省略了,则当没有错误时,会返回'测试字串'的值。如果'错误时输出值'被省略了,则当有错误时,会返回空字串:
- {{#iferror:→{{#expr: 1 + 2}}|error|correct}}
correct
- {{#iferror:→{{#expr: 1 + X}}|error|correct}}
error
- {{#iferror:→{{#expr: 1 + 2}}|error}}
3
- {{#iferror:→{{#expr: 1 + X}}|error}}
error
- {{#iferror:→{{#expr: 1 + 2}}}}
3
- {{#iferror:→{{#expr: 1 + X}}}}
- {{#iferror:→{{#expr: .}}|error|correct}}
correct
- {{#iferror:→<strong class="error">a</strong>|error|correct}}
error
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:Ifnumber - A3满开剧团
- 模板:B站视频 - 碧蓝航线
- 模板:勇士图鉴 - 克鲁赛德战记
- 模板:攻略文章 - 深空之眼
- 模板:Infobox - 《逃离塔科夫》官方 Wiki(镜像)
- 模板:卡片 - 偶像梦幻祭2
- 模板:Resistance Infobox - 最终幻想勇气启示录
- 模板:Reflist - 轨迹系列
- 模板:Ap - 英雄联盟
- 模板:Article - Minecraft WIKI
ifexist
根据指定页面是否存在,返回两个指定值中的一个。
出自扩展 ParserFunctions。
- 格式
- {{#ifexist: 页面标题|页面存在输出值|页面不存在输出值}}
- 例子
- 此函数当页面存在时判定为
true(真)
,不论它是否包含内容,是否为可见空白页(包含元数据,如分类链接和魔术字(Magic words),但不含可见内容),是否为空白页,是否为重定向页。 - 只有链接为红色(页面不存在,如
帮助:如何打辰纱
)的页面,才会被判定为false(假)
,包括曾经存在但已经被删除的页面。- {{#ifexist: 帮助:解析函数|exists|doesn't exist}}→
exists
- {{#ifexist: 帮助:如何打辰纱|exists|doesn't exist}}→
doesn't exist
- 自定义过的系统消息页(System message)和由软件定义的特殊页(Special pages)会被判定为
true(真)
。 - {{#ifexist: 特殊:监视列表|exists|doesn't exist}}→
exists
- {{#ifexist: 特殊:用户查核|exists|doesn't exist}}→
doesn't exist
(因为没有安装CheckUser) - {{#ifexist: MediaWiki:Copyright|exists|doesn't exist}}→
doesn't exist
(因为MediaWiki:Copyright页面没有被自定义过)
- 如果一个页面使用
#ifexist:
来检查目标页面是否存在,则该页面会出现在特殊:链入页面中目标页面的列表里。 - 所以如果本页面(帮助:解析函数)中存在{{#ifexist:用户:114514}},则在特殊:链入页面/用户:114514中,会包含
帮助:解析函数
。 - 在使用了共享媒体存储库(Shared media repository)的wiki上,
#ifexist:
还可以用来检查文件是否被上传到指定的存储库,而不是wiki自身:- {{#ifexist: 文件:现在.png|exists|doesn't exist}}→
doesn't exist
- {{#ifexist: 文件:测试.jpg|exists|doesn't exist}}→
doesn't exist
- {{#ifexist: 媒体:Test.png|exists|doesn't exist}}→
exists
- 如果本地wiki已经创建了以上文件,则会显示
exists
。 #ifexist:
不对跨wiki链接起作用。- ifexist的限制
#ifexist:
被认为是一个“高开销解析函数”;每个页面只能包含有限个这样的函数(包括模板中含的函数)。当超过限制的数量时,任何超出数量的#ifexist:
函数会被自动判定为false(假)
,不论目标页面是否存在。并且页面会被添加至分类:页面中有太多耗费的语法功能呼叫。各个追踪分类(Tracking categories)的名字在不同语言的wiki内可能有所不同。- 在一些应用场合下,可以使用CSS来模拟ifexist的效果,如使用选择器
a.new
(用于选择指向不存在页面的链接)或a:not(.new)
(用于选择指向存在页面的链接)。更进一步,既然单个页面中高开销解析解析函数的数量限制是由$wgExpensiveParserFunctionLimit参数控制的,可以通过修改LocalSettings.php
来满足使用要求。
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
ifexpr
根据指定表达式计算结果的布尔值,返回两个指定值中的一个。
出自扩展 ParserFunctions。
- 格式
- {{#ifexpr: 表达式|为真输出值|为假输出值}}
- '表达式'的计算方法和上面expr完全一样,可用的运算符也相同。运算结果会被当作一个布尔值。
- 例子
- 输入任何空表达式会判断为
false(假)
:- {{#ifexpr:|yes|no}}→
no
- 和上面expr中所述相同:零值被判断为
false(假)
,任何非零值被判断为true(真)
,所以这个函数的功能也可以用ifeq和expr来实现:- {{#ifeq:{{#expr: 表达式}}|0|为假输出值|为真输出值}}
- 但在表达式为空或有误时,这两种实现方式的效果不同(因为错误消息会被当作一个空字串,它不等于零,所以会得到'为真输出值'):
- {{#ifexpr: =|yes|no}}→
表达式错误:未预料的=操作符。
- 而:
- {{#ifeq:→{{#expr: =}}|0|no|yes}}
yes
- 两个'输出值'可省略其一或两者都省略。当该情况下的输出值被省略时,不会输出结果。
- {{#ifexpr: 1 > 0|yes}}→
yes
- {{#ifexpr: 1 < 0|yes}}→
- {{#ifexpr: 0 = 0|yes}}→
yes
- {{#ifexpr: 1 > 0||no}}→
- {{#ifexpr: 1 < 0||no}}→
no
- {{#ifexpr: 1 > 0}}→
- 支持逻辑运算 and 和 or:
- {{#ifexpr: 0 = 0 or 1 = 0|yes}}→
yes
- {{#ifexpr: 0 = 0 and 1 = 0||no}}→
no
- {{#ifexpr: 2 > 0 or 1 < 0|yes}}→
yes
- {{#ifexpr: 2 > 0 and 1 > 0|yes|no}}→
yes
imgh
获取指定图片高度。
出自扩展 ImageSizeInfoFunctions。
- 格式
- {{#imgh: 图片名}}
- 例子
- {{#imgh: 文件:Wikilogo.png}}→
101
- {{#imgh: Wikilogo.png}}→
101
- {{#imgh: aaaaaaaaaaaaaaaaaaaaaaa.png}}→
0
(不存在的图片)
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
imgw
获取指定图片宽度。
出自扩展 ImageSizeInfoFunctions。
- 格式
- {{#imgw: 图片名}}
- 例子
- {{#imgw: 文件:Wikilogo.png}}→
440
- {{#imgw: Wikilogo.png}}→
440
- {{#imgw: aaaaaaaaaaaaaaaaaaaaaaa.png}}→
0
(不存在的图片)
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
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-13579246810|note}}→ 电话号码 请按格式输入,例如:+86-13579246810
- https://wiki.biligame.com/ {{#info: 请必须使用 https。|warning}}→ https://wiki.biligame.com/ 请必须使用 https。
- 2011-02-29 {{#info: 日期不正确。|error}}→
2011-02-29 日期不正确。
- 在悬浮提示中显示大量文字 {{#info: 悬浮提示中要显示大量文字。……|note|max-width=600}}→
在悬浮提示中显示大量文字 悬浮提示中要显示大量文字。还有更多的文字。还有更多的文字。还有更多的文字。还有更多的文字。</br></br>悬浮提示中要显示大量文字。还有更多的文字。还有更多的文字。还有更多的文字。还有更多的文字。
- 使用不同主题样式的悬浮提示。 {{#info: 使用不同主题样式的悬浮提示。|note|theme=square-border-light}}→
使用不同主题样式的悬浮提示。 使用不同主题样式的悬浮提示。
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:三技能 - 零号任务
- 模板:B站专栏/资料 - 少前:云图计划
- 模板:新版角色图鉴 - 另一个伊甸
- 模板:状态 - 机动战姬聚变
- 模板:文献资料 - 暗黑破坏神:不朽
- 模板:颜色释义 - 明日方舟
- 模板:角色 - 部落冲突
- 模板:怪物信息栏 - 神佑释放
- 模板:世界巡游 - 碧蓝航线
- 模板:舰娘图鉴 - 碧蓝航线
int
获取特定系统消息在当前语言中的内容,并可以提供多个参数(各个参数会按顺序分别替换掉系统消息内容中的$1、$2、...和$N),系统消息可以用扩展及Mediawiki命名空间定义。
MediaWiki原生支持。
- 格式
- {{int: Message名称|参数1|参数2|...|参数N}}
- 例子
- {{int: edit}}→
编辑
- {{int: Msu-comment}}→
基于MsUpload的文件上传
(修改MediaWiki:Msu-comment页面,可以修改编辑器中拖动图片上传的默认说明) - {{int: sunday}}→
星期日
- {{int: mycustomjsprotected}}→
您没有权限编辑这个JavaScript页面。
- {{int: multiarraymap-desc}}→
⧼multiarraymap-desc⧽
- {{int: markedaspatrolledtext}}→
$1的已选中版本已被标识为已巡查。
- {{int: markedaspatrolledtext|首页}}→
首页的已选中版本已被标识为已巡查。
- {{int: pipe-separator}}→
|
- {{int: parentheses|ABC括号内容}}→
(ABC括号内容)
(自动生成符合语言的括号) - {{int: quotation-marks|ABC引号内容}}→
“ABC引号内容”
(自动生成符合语言的引号) - {{int: imgmultipageprev}}→
← 上一页
invoke
调用使用Lua编写的模块。 模块提供了灵活、高性能的扩展方式。在一些自动化程度较高的Wiki中,模块极大减少了维护工作量,让少数贡献者维持大规模wiki的数据更新成为可能。
历史上,一些解析函数扩展的引入极大的增加了编写wikitext的复杂性上限,臃肿繁杂的wikitext不易阅读、维护困难。同时,如字符串解析函数等在大规模应用时出现了性能问题,这导致了Wikimedia的wiki停止使用String function,并用模块作为替代解决问题。请参见讨论phab:T8455获取更多信息。
出自扩展 Scribunto。
- 格式
- {{#invoke: 模块名|函数名|参数1|参数2|参数3 ...}}
更多信息请参阅
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
L
language
根据输入的语言代号获取对应的语言全名。
MediaWiki原生支持。
- 格式
- {{#language: 语言代号}}
- 例子
- {{#language: zh}}→
中文
- {{#language: zh-hans}}→
中文(简体)
- {{#language: zh-hant}}→
中文(繁體)
- {{#language: ja}}→
日本語
- {{#language: en}}→
English
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
lc
把输入的字串中所有字母变成小写。
MediaWiki原生支持。
- 格式
- {{lc: wikitext}}
- 例子
- {{lc: QWER脸滚键盘}}→
qwer脸滚键盘
lcfirst
把输入的字串中第一个字母变成小写。
MediaWiki原生支持。
- 格式
- {{lcfirst: wikitext}}
- 例子
- {{lcfirst: QEWR脸滚键盘}}→
qEWR脸滚键盘
- {{lcfirst: 你们说的QEWR脸滚键盘是什么意思啊}}→
你们说的QWER脸滚键盘是什么意思啊
len
获取字串长度,多字节字符也算一个字,字串前后的空格和回车均不会算进长度中,若输入的字串中有HTML实体( 等),该实体将不会被转换成一般文字,而是按原本的姿态( )计算。被nowiki括住的内容不会算进长度中。
出自扩展 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.”。
- 格式
- {{#len: 字串}}
- 例子
- {{#len: A字串 BC}}→
6
- {{#len: 字串 BC}}→
10
- {{#len:→<nowiki>This is a</nowiki>test}}
4
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:攻击范围/个 - 明日方舟
- 模板:导弹图鉴 - 碧蓝航线
- 模板:舰炮图鉴 - 碧蓝航线
- 模板:装备名链接 - 碧蓝航线
- 模板:物品 - Chronicon
- 模板:符文 - Chronicon
- 模板:勇士图鉴 - 克鲁赛德战记
- 模板:物品 - 戴森球计划
- 模板:图鉴 - 地下城堡3
- 模板:Gamename - 《逃离塔科夫》官方 Wiki(镜像)
listfilter
出自扩展ParserPower。
listmap
出自扩展ParserPower。
listmerge
出自扩展ParserPower。
listsort
出自扩展ParserPower。
listunique
出自扩展ParserPower。
localurl
获取指定页面的本地URL,可附加参数。
获取的URL不包括域名,且被URL Encode,这与#localurle行为一致。
MediaWiki原生支持。
- 格式
- {{localurl: 页面名|参数}}
- 例子
- {{localurl: 帮助:解析函数}}→
/tools/%E5%B8%AE%E5%8A%A9:%E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0
- {{localurl: 帮助:解析函数|action=edit}}→
/tools/index.php?title=%E5%B8%AE%E5%8A%A9:%E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0&action=edit
- {{localurl: 帮助:解析函数|aaa=233}}→
/tools/index.php?title=%E5%B8%AE%E5%8A%A9:%E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0&aaa=233
localurle
获取指定页面的本地URL,可附加参数。
获取的URL不包括域名,且被URL Encode,这与#localurl行为一致。
MediaWiki原生支持。
- 格式
- {{localurle: 页面名|参数}}
- 例子
- {{localurle: 帮助:解析函数}}→
/tools/%E5%B8%AE%E5%8A%A9:%E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0
- {{localurle: 帮助:解析函数|action=edit}}→
/tools/index.php?title=%E5%B8%AE%E5%8A%A9:%E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0&action=edit
- {{localurle: 帮助:解析函数|aaa=233}}→
/tools/index.php?title=%E5%B8%AE%E5%8A%A9:%E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0&aaa=233
loop
按指定次数循环处理一段wikitext。
出自扩展 Loops。
- 格式
- {{#loop: 变量名|开始值|执行次数|重复的wikitext}}
- 参数1:定义函数中的变量名,可在参数4中输出时使用。
- 参数2:开始值,上例中为1,即表示从1开始计算。也可以是其他数字,比如角色卡抽到手就已经是3星,填3,从3开始。
- 参数3:执行次数,如上例中的4。也可以是负数,如-4,同样执行4次,但参数1中变量变为递减。
- 参数4:重复输出的内容。可以利用{{#var:变量名}}来改变重复输出时的内容。
- 例子
- {{#loop: loop_i|1|4|这是第→{{#var:loop_i}}轮重复,还有{{#expr: 4 -轮待输出。{{#var: loop_i}}}}<br>}}
- 这是第1轮重复,还有3轮待输出。
这是第2轮重复,还有2轮待输出。
这是第3轮重复,还有1轮待输出。
这是第4轮重复,还有0轮待输出。
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:角色 - 航海王:梦想指针
- 模板:剧情 - 机甲爱丽丝
- 模板:回忆图鉴 - 突击莉莉终结之弹
- 模板:星级 - 突击莉莉终结之弹
- 模板:干员导航 - 明日方舟
- 模板:材料 - 神佑释放
- 模板:舰载机图鉴 - 碧蓝航线
- 模板:三列勇士表 - 克鲁赛德战记
- 模板:动态展示 - CrashFever
- 模板:主页链接块 - 城市:天际线
lst
引用特定页面内已预先标记的内容段落。只要在目标页面内,把目标内容用
和
包裹,就可以在任何页面中使用此函数引用该段内容。如果段落名称内不含空格等在XML语法中有特殊意思的字符,段落名称前后的半形引号则可略去。
出自扩展 Labeled Section Transclusion。
- 格式
- {{#lst: 页面名称|段落名称}}
- 例子
- 以下例子引用了词条帮助:样板中名为“标记内容”的段落。
- {{#lst: 帮助:样板|标记内容}}→
这里显示的是样板内容 |
- 样板里对应的代码大致如下:
<section begin=标记内容 /> {| class="wikitable" style="width:50%" |- | 这里显示的是样板内容 |} <section end=标记内容 />
- 本地化:
在内部,解析器函数都使用lst前缀,以与扩展名称保持一致。由于这个首字母缩略词可能会让非开发人员感到困惑,因此引入了可读的英语变体,因此目前可以从任一名称调用这些函数,使用方法和原函数一致。
函数 | 英语 |
---|---|
#lst | #section |
#lstx | #section-x |
#lsth | #section-h |
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:材料图鉴 - 明日方舟
- 模板:吸血 - 物竞天择2
- 模板:异形结构 - 物竞天择2
- 模板:步枪基础 - 物竞天择2
- 模板:生物量技能表 - 物竞天择2
- 模板:电磁手雷 - 物竞天择2
- 模板:硬壳 - 物竞天择2
- 模板:神经毒气雷 - 物竞天择2
- 模板:当前信息 - 食物语-档案馆
lsth
- 参考官方文档和其他文档完善内容
- 增加实际用例和技巧
引用特定页面内位于特定标题下的内容段落。此函数使用方法比lst简单,不需要使用section来定义段落,只需要使用标题(例如== 标题 ==
)。此函数会引用指定的标题之后开始,下一个同级标题之前的结束的内容,并不会包含标题本身。另外可以设定结束子标题名称,让函数引用从子标题名称开始直到结束子标题名称之前的所有内容,此功能可以用于同时引用多个段落,只要遇到结束子标题,不管是不是同级标题也会立刻停止引用,并不会引用到结束子标题及其后的内容。
- 由于此函数使用方法和lst对比,不需要使用section来定义段落开头和结尾,因此如果目标段落在原页面内使用了需要参数结束的模板,会将该模板内容一起引用,可能会导致页面排版混乱
出自扩展 Labeled Section Transclusion。
- 格式
- {{#lsth: 页面名称|子标题名称|结束子标题名称}}
- 例子
- 本地化:
在内部,解析器函数都使用lst前缀,以与扩展名称保持一致。由于这个首字母缩略词可能会让非开发人员感到困惑,因此引入了可读的英语变体,因此目前可以从任一名称调用这些函数,使用方法和原函数一致。
函数 | 英语 |
---|---|
#lst | #section |
#lstx | #section-x |
#lsth | #section-h |
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
lstx
- 参考官方文档和其他文档完善内容
- 增加实际用例和技巧
引用特定页面内除了已预先标记的段落以外的内容,并可以选择用其他字串代替被去掉的段落。
出自扩展 Labeled Section Transclusion。
- 格式
- {{#lstx: 页面名称|除去段落名称|代替字串}}
- 例子
- {{#lstx:帮助:样板|标记内容|请查看→[[帮助:样板#样板1]]}}
==样板1== 请查看[[帮助:样板#样板1]] ==样板2==
- 本地化:
在内部,解析器函数都使用lst前缀,以与扩展名称保持一致。由于这个首字母缩略词可能会让非开发人员感到困惑,因此引入了可读的英语变体,因此目前可以从任一名称调用这些函数,使用方法和原函数一致。
函数 | 英语 |
---|---|
#lst | #section |
#lstx | #section-x |
#lsth | #section-h |
- 此函数比较难用,因为大部分词条除了文字内容还会有很多用于分类和导航的部分。比如使用以上的例子的话就会把原词条内的分类信息和导航段落也一并引用了,对分类管理和内容排版非常不友好。此函数亦无法同时不引用两段或以上的内容,所以设定更多段落排除分类等信息的方法也是不行的。
lstapp
出自扩展ParserPower。
lstcnt
出自扩展ParserPower。
lstcntuniq
出自扩展ParserPower。
lstelem
出自扩展ParserPower。
lstfltr
出自扩展ParserPower。
lstfnd
出自扩展ParserPower。
lstind
出自扩展ParserPower。
lstjoin
出自扩展ParserPower。
lstmap
出自扩展ParserPower。
lstmaptemp
出自扩展ParserPower。
lstprep
出自扩展ParserPower。
lstrm
出自扩展ParserPower。
lstsep
出自扩展ParserPower。
lstsrt
出自扩展ParserPower。
lstsub
出自扩展ParserPower。
lstuniq
出自扩展ParserPower。
N
namespace
获取指定页面的命名空间。
MediaWiki原生支持。
- 格式
- {{NAMESPACE: 页面名}}
- 例子
- {{NAMESPACE:帮助:解析函数}}→
帮助
- {{NAMESPACE:首页}}→
- {{NAMESPACE:模板:2333}}→
模板
- {{NAMESPACE:帮助:解析函数}}→
帮助
- 底层代码
- 尝试将输入字符串作为标题解析。如果解析成功,返回其命名空间名称。
- 其核心功能由Title类提供。
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
namespacee
获取指定页面的命名空间名称,并URL编码。
MediaWiki原生支持。
- 格式
- {{NAMESPACEE: 页面名}}
- 例子
- {{NAMESPACEE:帮助:解析函数}}→
%E5%B8%AE%E5%8A%A9
- {{NAMESPACEE:首页}}→
- {{NAMESPACEE:模板:2333}}→
%E6%A8%A1%E6%9D%BF
- {{NAMESPACEE:帮助:解析函数}}→
%E5%B8%AE%E5%8A%A9
- 底层代码
- 尝试将输入字符串作为标题解析。如果解析成功,将其命名空间名称URL编码后返回。
- 其核心功能由Title类提供。
namespacenumber
获取指定页面的命名空间代码。
MediaWiki原生支持。
- 格式
- {{NAMESPACENUMBER: 页面名}}
- 例子
- {{NAMESPACENUMBER:首页}}→
0
- {{NAMESPACENUMBER:帮助:解析函数}}→
12
- {{NAMESPACENUMBER:模板:2333}}→
10
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
ns
获取命名空间在当前语言中的名称。
MediaWiki原生支持。
- 格式
- {{ns: 命名空间编号}}
- {{ns: 命名空间名称}}
- {{ns: 命名空间别名}}
- 例子
- {{ns: -2}}→
媒体文件
- {{ns: -1}}→
特殊
- {{ns: Special}}→
特殊
- {{ns: 特殊}}→
特殊
- {{ns: 10}}→
模板
- {{ns: 11}}→
模板讨论
- {{ns: Category}}→
分类
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:模板说明/文档 - 机甲爱丽丝
- 模板:风险 - BangDream!少女乐团派对
- 模板:切换显示/文档 - 白荆回廊
- 模板:编辑提示 - 白荆回廊
- 模板:模板说明/文档 - 猫之城
- 模板:风险 - 猫之城
- 模板:模板说明/文档 - 封印者
- 模板:风险 - 封印者
- 模板:角色/文档 - CrashFever
- 模板:风险 - 银河境界线
nse
获取命名空间在当前语言中的名称,并URL编码。
MediaWiki原生支持。
- 格式
- {{nse: 命名空间编号}}
- {{nse: 命名空间名称}}
- {{nse: 命名空间别名}}
- 例子
- {{nse: -2}}→
%E5%AA%92%E4%BD%93%E6%96%87%E4%BB%B6
- {{nse: -1}}→
%E7%89%B9%E6%AE%8A
- {{nse: Special}}→
%E7%89%B9%E6%AE%8A
- {{nse: 特殊}}→
%E7%89%B9%E6%AE%8A
- {{nse: 10}}→
%E6%A8%A1%E6%9D%BF
- {{nse: 11}}→
%E6%A8%A1%E6%9D%BF%E8%AE%A8%E8%AE%BA
- {{nse: Category}}→
%E5%88%86%E7%B1%BB
numberingroup
获取特定用户组权限的用户数量。
MediaWiki原生支持。
- 格式
- {{NUMBERINGROUP: 群组名称}}
- 例子
- {{NUMBERINGROUP: bureaucrat}}→
8
- {{NUMBERINGROUP: confirm}}→
0
- {{NUMBERINGROUP: sysop}}→
17
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
numberofactiveusers
获取当前活跃的用户数量,与特殊:统计信息中显示的活跃用户一致。
MediaWiki原生支持。
- 格式
- {{NUMBEROFACTIVEUSERS}}
- 例子
- {{NUMBEROFACTIVEUSERS}}→
9
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:Fantôme Iris卡面一览 - ARGONAVIS
- 模板:Wiki信息 - ARGONAVIS
- 模板:卡面一览 - ARGONAVIS
- 模板:小剧场全员 - ARGONAVIS
- 模板:站点信息 - 暗黑破坏神:不朽
- 模板:HomePage - 碧蓝档案
numberofadmins
获取管理员数量,与特殊:统计信息中显示的一致。
MediaWiki原生支持。
- 格式
- {{NUMBEROFADMINS}}
- 例子
- {{NUMBEROFADMINS}}→
17
numberofarticles
获取内容页面数量,与特殊:统计信息中显示的一致。
MediaWiki原生支持。
- 格式
- {{NUMBEROFARTICLES}}
- 例子
- {{NUMBEROFARTICLES}}→
154
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
numberofedits
获取总编辑次数,与特殊:统计信息中显示的一致(项目:自 WIKI实验室 建立以来的页面编辑数)。
MediaWiki原生支持。
- 格式
- {{NUMBEROFEDITS}}
- 例子
- {{NUMBEROFEDITS}}→
16,103
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:Wiki信息 - ARGONAVIS
- 模板:卡面一览 - ARGONAVIS
- 模板:站点信息 - 暗黑破坏神:不朽
- 模板:HomePage - 碧蓝档案
- 模板:关于我们 - 冲呀!饼干人王国
- 模板:维护页面 - 激战2
- 模板:Bf - 森之国度
numberoffiles
获取媒体文件数量,与特殊:统计信息中显示的一致(项目:上传的文件)。
MediaWiki原生支持。
- 格式
- {{NUMBEROFFILES}}
- 例子
- {{NUMBEROFFILES}}→
177
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
numberofpages
获取所有页面数量,与特殊:统计信息中显示的一致(项目:页面(本wiki的所有页面,包括讨论页面、重定向等。))。
MediaWiki原生支持。
- 格式
- {{NUMBEROFPAGES}}
- 例子
- {{NUMBEROFPAGES}}→
2,318
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:Wiki信息 - ARGONAVIS
- 模板:卡面一览 - ARGONAVIS
- 模板:小剧场全员 - ARGONAVIS
- 模板:站点信息 - 暗黑破坏神:不朽
- 模板:HomePage - 碧蓝档案
- 模板:关于我们 - 冲呀!饼干人王国
- 模板:关于本WIKI - 白荆回廊
numberofpageviews
【已弃用MediaWiki Version: ≤ 1.25】页面浏览次数。由于缓存,它通常是不准确的。
MediaWiki原生支持。
- 格式
- {{NUMBEROFPAGEVIEWS}}
- 例子
- {{NUMBEROFPAGEVIEWS}}→
572
numberofusers
站点注册用户数量。
在BWIKI上,登录B站的用户第一次浏览某Wiki时,会自动创建wiki用户(基于B站账号),并自动赋予bilibili和自动确认用户等用户组。
MediaWiki原生支持。
- 格式
- {{NUMBEROFUSERS}}
- 例子
- {{NUMBEROFUSERS}}→
7,490,068
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
numberofviews
【已弃用MediaWiki Version: ≤ 1.25】站点浏览次数。与特殊:统计信息中的 查看统计 - 总计查看 一致。
MediaWiki原生支持。
- 格式
- {{NUMBEROFVIEWS}}
- 例子
- {{NUMBEROFVIEWS}}→
1,379,861
O
or
- 参考官方文档和其他文档完善内容
- 增加实际用例和技巧
出自扩展 ParserPower。
- 格式
- {{#or: 字符串1|字符串2|…|字符串n}}
- 例子
- {{#or: 1|2}}→
1
- {{#or:|2}}→
2
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
P
padleft
往字串左边填充特定符号直到一定长度,多字节文字也算一个字,原字串为空的话还可以当作repeat用,如果原字串长度比需要的长度长,则不会做任何处理。
MediaWiki原生支持。
- 格式
- {{padleft: 原字串|需要的长度(字符数)|填充字串(默认为“0”)}}
- 例子
- {{padleft: 15|5}}→
00015
- {{padleft: xyz|5}}→
00xyz
- {{padleft: 原字串|10|填}}→
填填填填填填填原字串
- {{padleft: 原字串|10|填充}}→
填充填充填充填原字串
- {{padleft:|5|你好}}→
你好你好你
- {{padleft:|5|大家好}}→
大家好大家
- {{padleft: 这个真心太长了吧|5|填}}→
这个真心太长了吧
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:同人作品 - 少前:云图计划
- 模板:Mp3 - ARGONAVIS
- 模板:掉落表列表 - 突击莉莉终结之弹
- 模板:FormatCardNo - 妃十三学园
- 模板:歌曲 - BangDream!少女乐团派对
- 模板:活动歌曲称号 - BangDream!少女乐团派对
- 模板:同人作品 - 碧蓝航线
- 模板:漫画 - 碧蓝航线
- 模板:生日 - 碧蓝航线
- 模板:舰炮图鉴 - 碧蓝航线
padright
往字串右边填充特定符号直到一定长度,多字节文字也算一个字,原字串为空的话还可以当作repeat用,如果原字串长度比需要的长度长,则不会做任何处理。
MediaWiki原生支持。
- 格式
- {{padright: 原字串|需要的长度(字符数)|填充字串(默认为“0”)}}
- 例子
- {{padright: 15|5}}→
15000
- {{padright: xyz|5}}→
xyz00
- {{padright: 原字串|10|填}}→
原字串填填填填填填填
- {{padright: 原字串|10|填充}}→
原字串填充填充填充填
- {{padright:|5|你好}}→
你好你好你
- {{padright:|5|大家好}}→
大家好大家
- {{padright: 这个真心太长了吧|5|填}}→
这个真心太长了吧
pageid
获取页面的ID,是页面的唯一标识符。
MediaWiki原生支持。
- 格式
- {{PAGEID:页面名}}
- 例子
- {{PAGEID:首页}}→
1
- {{PAGEID:帮助:解析函数}}→
2216
- {{PAGEID:不存在的页面233333}}→
0
- 其他用法
- 可以用于构建页面“短链”如 https://wiki.biligame.com/wikipath/?curid=页面ID
- 如帮助:解析函数页:https://wiki.biligame.com/tools/?curid=2216
- 需要注意,这个URL会有独立的缓存能加速访问,类似wiki对js/css资源的缓存,约半小时。
pagename
获取页面名,不带有命名空间。
MediaWiki原生支持。
- 格式
- {{PAGENAME}}
- 例子
- {{PAGENAME}}→
解析函数
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:文章戳 - 公元0年
- 模板:模板 - 公元0年
- 模板:信息表格 - 零号任务
- 模板:角色 - 航海王:梦想指针
- 模板:家具 - 少前:云图计划
- 模板:文章模板 - 剑与远征
- 模板:Actress - 机甲爱丽丝
- 模板:剧情 - 机甲爱丽丝
- 模板:Card - 妃十三学园
- 模板:关卡 - 明日方舟
pagenamee
获取URL编码的页面名,不带有命名空间。
MediaWiki原生支持。
- 格式
- {{PAGENAMEE}}
- 例子
- {{PAGENAMEE}}→
%E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0
pagesincategory
返回属于特定分类的页面数量。
MediaWiki原生支持。
- 格式
- {{PAGESINCATEGORY: 分类名}}
{{PAGESINCATEGORY: 分类名 | all / pages / subcats / files}}
默认all
- 例子
- {{PAGESINCATEGORY: 施工中}}→
25
- {{PAGESINCATEGORY: 施工中|files}}→
0
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
pagesize
获取指定页面大小(字节)。
可以指定不格式化数字;不存在的页面大小为0。
MediaWiki原生支持。
- 格式
- {{PAGESIZE: 页面名}}
- {{PAGESIZE: 页面名|R}}不格式化数字
- 例子
- {{PAGESIZE: 帮助:解析函数}}→
16,953
- {{PAGESIZE: 帮助:解析函数|R}}→
16953
- {{PAGESIZE: 不存在的页面23333333}}→
0
plural
用于语言复数判断。如果参数1是一个绝对值等于1的表达式,返回参数2(单数情况),否则返回参数3(复数情况)。部分语言如俄语支持第四个参数。
MediaWiki原生支持。
- 格式
- {{plural: wikitext|单数情况|复数情况}}
- 例子
- {{plural: 0|is|are}}→
are
- {{plural: 1|is|are}}→
is
- {{plural: -1|is|are}}→
is
- {{plural: 2|is|are}}→
are
- {{plural:→{{#expr:21 mod 10}}|is|are}}
is
pos
查找指定字符串首次出现的位置,从左到右搜索,没有则返回空。
区分大小写。nowiki标签及其中内容算作一个不匹配任何内容的字符。
出自扩展 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.”。
- 格式
- {{#pos: 字符串|搜索目标}}
- {{#pos: 字符串|搜索目标|偏移量}}指定偏移量,从第几个字符开始搜索
- 例子
- {{#pos: 这是长字串|字串}}→
3
- {{#pos: 这是长字串长|长}}→
2
- {{#pos: 这是长字串长|长|4}}→
5
- {{#pos: 这是长字串|哈}}→
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:角色 - 航海王:梦想指针
- 模板:模组/个 - 明日方舟
- 模板:舰娘图鉴 - 碧蓝航线
- 模板:Tabber - 封印者
- 模板:曲包 - 音乐世界Cytus II
- 模板:收藏物品 - Deemo II
- 模板:管理喵芯片 - 深空之眼
- 模板:物品 - 戴森球计划
- 模板:信息 - 第五人格
- 模板:图鉴 - 地下城堡2
protectionexpiry
查询某页面指定动作的保护时间。
页面不存在或错误的动作返回空,无限期则返回infinity。
MediaWiki原生支持。
- 格式
- {{PROTECTIONEXPIRY: 动作}}查询本页面
- {{PROTECTIONEXPIRY: 动作|页面名}}【高开销】查询指定页面对指定动作的保护时间
- 例子
- {{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|保护页面示例}}→
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
protectionlevel
查询某页面指定动作的保护等级。
没有保护返回空,仅限特定用户组会返回用户组名,例如仅限管理员会返回sysop。
MediaWiki原生支持。
- 格式
- {{PROTECTIONLEVEL: 动作}}查询本页面
- {{PROTECTIONLEVEL: 动作|页面名}}【高开销】查询指定页面对指定动作的保护时间
- 例子
- {{PROTECTIONLEVEL: edit}}→
- {{PROTECTIONLEVEL: move}}→
- {{PROTECTIONLEVEL: edit|保护页面示例}}→
sysop
- {{PROTECTIONLEVEL: move|保护页面示例}}→
sysop
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
Q
queryformlink
- 参考官方文档和其他文档完善内容
- 增加实际用例和技巧
特殊:执行查询
出自扩展 Page Forms。
- 格式
- {{#queryformlink:form=query form name}}
- {{#queryformlink:form=|link text=|link typ=|query string=query string parameters|tooltip=|popup}}
- 例子
code demo
→ 效果
R
rel2abs
将相对路径转换为绝对路径。
出自扩展 ParserFunctions。
- 格式
- {{#rel2abs: 相对路径}}
- {{#rel2abs: 相对路径|基础路径}}
- 说明
- '相对路径'参数中,支持下列格式:
.
→ 当前路径级别..
→ “至上一级路径”/foo
→ “至下一级子目录 /foo”
- 如果'基础路径'参数没有被指定,则会使用当前页面的完整页面名称(可使用{{FULLPAGENAME}}获得,本页为
帮助:解析函数
)。 - 例子
- 一般情况如下:
- {{#rel2abs: /quok|Help:Foo/bar/baz}}→
Help:Foo/bar/baz/quok
- {{#rel2abs: ./quok|Help:Foo/bar/baz}}→
Help:Foo/bar/baz/quok
- {{#rel2abs: ../quok|Help:Foo/bar/baz}}→
Help:Foo/bar/quok
- {{#rel2abs: ../.|Help:Foo/bar/baz}}→
Help:Foo/bar
/.
、/./
之类不正确的格式会被忽略。不允许出现连续两个以上的句点.
,多层路径移动如下:- {{#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”(尝试访问根节点以上节点)
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
replace
返回给定的字符串,其中所有出现的搜索词都被替换为替换词。
此功能区分大小写。
如果搜索词未指定或为空,则将搜索单个空格。
如果替换词未指定或者为空,则所有出现的搜索词都将从字符串中删除。
即使替换词是空格,也会使用空字符串。这是 MediaWiki 解析器的副作用。要使用空格作为替换词,请将其放在 nowiki 标记中。
要用正则表达式匹配替换,请用:rreplace。
出自扩展 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.”。
- 格式
- {{#replace: 源字符串|搜索项|替换项}}
- 例子
- {{#replace:Clown piece}}→
Clownpiece
- {{#replace:My_little_home_page|_|→<nowiki> </nowiki>}}
Mylittlehomepage
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:角色 - 航海王:梦想指针
- 模板:新版角色图鉴 - 另一个伊甸
- 模板:角色图鉴 - 另一个伊甸
- 模板:首页列席 - 环形战争
- 模板:编辑按钮 - 帝国时代2决定版
- 模板:时装/个 - 明日方舟
- 模板:外部链接 - 崩坏3
- 模板:关卡图鉴 - 碧蓝航线
- 模板:生日 - 克鲁赛德战记
- 模板:DLC/查询 - 城市:天际线
revisionday
获取指定页面更新日期的日(day),无前导0。
MediaWiki原生支持。
- 格式
- {{REVISIONDAY}}
- {{REVISIONDAY: 词条名}}【高开销】
- 例子
- {{REVISIONDAY}}→
21
- {{REVISIONDAY: Test}}→
19
- {{REVISIONDAY: 首页}}→
21
- {{REVISIONDAY: 模板:面包屑}}→
8
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
revisionday2
获取指定页面更新日期的日(day),有前导0(如06)。
MediaWiki原生支持。
- 格式
- {{REVISIONDAY2}}
- {{REVISIONDAY2: 词条名}}【高开销】
- 例子
- {{REVISIONDAY2}}→
21
- {{REVISIONDAY2: Test}}→
19
- {{REVISIONDAY2: 首页}}→
21
- {{REVISIONDAY2: 模板:面包屑}}→
08
revisionid
获取页面最新的修订ID。
修订ID是一个wiki站点对每次编辑按顺序分配的唯一标识。更大的revisionid代表着更近更新的编辑。
MediaWiki原生支持。
- 格式
- {{REVISIONID}}
- {{REVISIONID: 词条名}}【高开销】
- 例子
- {{REVISIONID}}→
50587
- {{REVISIONID: 首页}}→
50579
- 不存在的页面返回空 {{REVISIONID: 不存在的233333333333}}→
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
revisionmonth
获取指定页面更新日期中的月,有前导零(即01月)。
MediaWiki原生支持。
- 格式
- {{REVISIONMONTH}}
- {{REVISIONMONTH|页面名}}【高开销】
- 例子
- {{REVISIONMONTH}}→
12
- {{REVISIONMONTH: 首页}}→
12
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:视频戳 - 机甲爱丽丝
- 模板:文章模板 - 明日方舟
- 模板:施工中 - 明日方舟
- 模板:文章时效 - 封印者
- 模板:最后更新 - 克鲁赛德战记
- 模板:更新时间 - 都市天际线2
- 模板:更新时间 - 城市:天际线
revisionmonth1
获取指定页面更新日期中的月,无前导零(即1月)。
MediaWiki原生支持。
- 格式
- {{REVISIONMONTH1}}
- {{REVISIONMONTH1|页面名}}【高开销】
- 例子
- {{REVISIONMONTH1}}→
12
- {{REVISIONMONTH1: 首页}}→
12
revisiontimestamp
获取指定页面更新时间的时间戳,格式:YYYYMMDDHHMMSS
。
MediaWiki原生支持。
- 格式
- {{REVISIONTIMESTAMP}}
- {{REVISIONTIMESTAMP: 页面名}}【高开销】
- 例子
- {{REVISIONTIMESTAMP}}→
20241221152431
- {{REVISIONTIMESTAMP: 首页}}→
20241221142845
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:回忆图鉴 - 突击莉莉终结之弹
- 模板:文章时效 - 封印者
- 模板:TimeSinceLastEdit - CSGO
- 模板:版头/提示 - 地下城堡2
- 模板:文章时效 - 异星工厂
- 模板:编写中 - falcon bms
- 模板:施工中 - 方舟指令
- 模板:待完善 - 高达
- 模板:文章时效 - 来古弥新
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: 首页}}→
39886146
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:施工中 - 少前:云图计划
- 模板:编辑提示 - 白荆回廊
- 模板:施工中 - 碧蓝航线
- 模板:最后更新 - 克鲁赛德战记
- 模板:最后更新 - 放置江湖
- 模板:施工中 - 方舟指令
- 模板:编辑提示 - 幻塔
- 模板:最后更新 - 边狱公司
- 模板:最后更新 - 神甲奇兵
revisionyear
获取指定页面最近更新日期的年,如:2024。
MediaWiki原生支持。
- 格式
- {{REVISIONYEAR}}
- {{REVISIONYEAR: 页面名}}【高开销】
- 例子
- {{REVISIONYEAR}}→
2024
- {{REVISIONYEAR: 首页}}→
2024
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:视频戳 - 机甲爱丽丝
- 模板:文章模板 - 明日方舟
- 模板:施工中 - 明日方舟
- 模板:更新时间 - 都市天际线2
- 模板:更新时间 - 城市:天际线
- 模板:文章戳 - 戴森球计划
- 模板:文章时效 - 戴森球计划
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
- 这个例子中,将待处理的文本通过正则表达式,把
b
和l
处理成红色标记。
- 这个例子中,将待处理的文本通过正则表达式,把
- {{#rreplace:bilibiliBWIKIbilibili|(KI)|replacement=→<span style="color:red">${1}1</span>}}
bilibiliBWIKI1bilibili
- 这个例子中,将待处理的文本通过正则表达式,把KI替换成了KI1并标红。由于$11表示的是第11个匹配的内容,并不是我们想要的正确表达式,所以这里需要将
$11
写成${1}
再加上添加的1
,即${1}1
。
- 这个例子中,将待处理的文本通过正则表达式,把KI替换成了KI1并标红。由于$11表示的是第11个匹配的内容,并不是我们想要的正确表达式,所以这里需要将
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:勇士图鉴 - 克鲁赛德战记
- 模板:图标 - 克鲁赛德战记
- 模板:处理内链 - 梦幻模拟战
- 模板:数值标红 - 铃兰之剑
- 模板:英雄图鉴/保留 - 英雄联盟
- 模板:头像列表 - 忍者必须死3
- 模板:角色导航头像 - 公主连结
- 模板:剧情 - 赛尔号
- 模板:内容内链 - 天地劫
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使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:新版活动日历/行 - 另一个伊甸
- 模板:回忆图鉴 - 突击莉莉终结之弹
- 模板:莉莉服装图鉴 - 突击莉莉终结之弹
- 模板:商城刷新 - APEX
- 模板:模组/个 - 明日方舟
- 模板:关卡图鉴 - 碧蓝航线
- 模板:鱼雷图鉴 - 碧蓝航线
- 模板:连载漫画 - 猫之城
- 模板:文章时效 - 封印者
- 模板:最后更新 - 克鲁赛德战记
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使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:关卡信息/主线/剧情 - 突击莉莉终结之弹
- 模板:Documentation/docname - 明日方舟
- 模板:塞壬图鉴顶栏 - 碧蓝航线
- 模板:怪物信息 - Core Keeper地心护核者
- 模板:素材图鉴 - 交错战线
- 模板:动态列表/行 - 深空之眼
- 模板:新闻列表/行 - 电竞经理
- 模板:新闻列表/行 - 刀剑神域黑衣剑士王牌
- 模板:文章 - 千年之旅
- 模板:游戏信息框 - 光环
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
处的第一条“注意”。 - 关于原始等号符
- '情况字串'不能包含原始等号符。为了解决这个问题,创建了一个只包含一个等号符
=
的模板{{=}}。 - 应用的例子:
|1=2 = raw
|1
|1
|1=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}}
- 写成便于阅读的格式即为:
|
|
|
|
|
|
}}
}}
}}
- 实际用例
- 一些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"}}→
↑ 这是备注里面,一二一二一切运算都有效
(内文连一个空格都没有的话,便会生成一个自关闭标签)
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位数表示的年。 | 2024 |
y
|
2位数表示的年。 | 24 |
L
|
1表示闰年(Leap year),0表示非闰年。 | 1 |
o [注 1]
|
ISO-8601 规定的该周所属年份。[注 2] | 2024[注 3] |
月 | ||
n
|
月份号,无前导零。 | 12 |
m
|
月份号,有前导零。 | 12 |
M
|
月份名称缩写,使用网站语言。(英文结果为 Dec )
|
12月 |
F
|
月份名称全称,使用网站语言。(英文结果为 December )
|
12月 |
xg
|
月份名称全称,使用网站语言的属格(Genitive)形式,注意区分其与主格(Nominative)形式的区别。 这项功能在斯拉夫语族(Slavic languages)中十分重要,如波兰语、俄语、白俄罗斯语、捷克语、斯洛伐克语、斯洛文尼亚语、乌克兰语等。 在中文环境下: |
对于中文:
(主格) {{#time:Y F d|20 June 2010|zh}} → (属格) {{#time:Y xg d|20 June 2010|zh}} → |
周 | ||
W
|
ISO 8601 规定的周数,有前导零。 | 51 |
日 | ||
j
|
月份内的日期号,无前导零。 | 21 |
d
|
月份内的日期号,有前导零。 | 21 |
z
|
年份内的日期号 (1月1日 = 0)。 注意:要获得 ISO 规定的日期号,需加上1。 |
355 |
D
|
星期的缩写。国际上不通用。 | 六 |
l
|
星期的全称。国际上不通用。 | 星期六 |
N
|
ISO 8601 规定的星期编号(星期一 = 1,星期日 = 7)。 | 6 |
w
|
星期编号(星期日 = 0,星期六 = 6)。 | 6 |
时 | ||
a
|
早上为 am (00:00:00 → 11:59:59);其他时间为 pm (12:00:00 → 23:59:59)。
|
pm |
A
|
上方 a 的大写形式。
|
PM |
g
|
12小时制的时,无前导零。 | 4 |
h
|
12小时制的时,有前导零。 | 04 |
G
|
24小时制的时,无前导零。 | 16 |
H
|
24小时制的时,有前导零。 | 16 |
分 和 秒 | ||
i
|
小时后的分钟数,有前导零。 | 45 |
s
|
分钟后的秒钟数,有前导零。 | 41 |
U
|
UNIX时间(Unix time)。从格林尼治时间(GMT)1970年1月1日00:00:00开始计的秒钟数。 | 1734799541 |
时区(需 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 。
|
2024-12-21T16:45:41+00:00 |
r
|
RFC 5322 格式的日期,等价于 D, j M Y H:i:s +0000 ,其中星期名和月份名国际上不通用。
|
Sat, 21 Dec 2024 16:45:41 +0000 |
非公历日历 | ||
伊斯兰历(Islamic calendar),又称 希吉来历(Hijri calendar) | ||
xmj
|
月份内的日期号。 | 19 |
xmF
|
月份名称全称。 | 主马达·阿色尼月 |
xmn
|
月份号。 | 6 |
xmY
|
全长表示的年。 | 1446 |
伊朗历(Iranian calendar),又称 贾拉利历(Jalali calendar) | ||
xij
|
月份内的日期号。 | 1 |
xiF
|
月份名称全称。 | Dey |
xin
|
月份号。 | 10 |
xiY
|
全长表示的年。 | 1403 |
xiy
|
2位数表示的年。 | 03 |
希伯来历(Hebrew calendar) | ||
xjj
|
月份内的日期号。 | 20 |
xjF
|
月份名称全称。 | 基斯流月 |
xjt
|
当前月份的天数。 | 30 |
xjx
|
属格形式的月份名称。 | Kislev |
xjn
|
月份号。 | 3 |
xjY
|
全长表示的年。 | 5785 |
泰国历(Thai solar calendar) | ||
xkY
|
泰国历的全长表示的年。 注意:公历1941年前的年份,1月到3月的范围内,计算得到的泰国历年份不正确。(原因) |
2567 |
民国纪年(Minguo calender) 朝鲜历(North Korean calendar),又称 主体历(Juche calendar) | ||
xoY
|
全长表示的年。 | 113 |
日本年号(Japanese era name, or Japanese nengo) | ||
xtY
|
全长表示的年(带有年号)。 | 令和6 |
转换标志 | ||
xn
|
将下一个数字代码转换为原始 ASCII 格式数字。 | 在印地语中, {{#time:H, xnH}} 得到的是 ०६, 06 。
|
xN
|
与 xn 功能类似。但它持续起作用到字串末尾,或字串中的下一个 xN 处。
| |
xr
|
将下一个数字代码转换为罗马数字格式。仅对 10,000 以内的数字有效 (MediaWiki 1.20 之前,仅对 3,000 以内的数字有效)。 |
{{#time:xrY}} → MMXXIV
|
xh
|
将下一个数字代码转换为希伯来数字格式。 | {{#time:xhY}} → ב'כ"ד
|
将日期和/或时间(公历)按格式字串规定的格式进行转换。
可自行指定日期/时间对象,默认使用魔术字(Magic word)
的值(该值使用世界协调时间,UTC),也就是页面最近一次渲染为HTML的时间。
出自扩展 ParserFunctions。
- 格式
- {{#time: 格式字串}}
- {{#time: 格式字串|日期/时间对象}}
- {{#time: 格式字串|日期/时间对象|语言代码}}
- 在右边的表格中列出了支持的格式控制代码。'格式字串'中的任何不被识别的字符将原样输出,包括空格(系统不用它们来编译代码)。
- 还有两种方法可以使'格式字串'内的字符原样输出:
- 反斜杠
\
后加字符,可以原样输出单个字母: - 一对半角双引号
" "
内的字符被当作文字,会原样输出,不带双引号。
- 反斜杠
- 另外,还可以用
xx
来输出单个字母x
。 - 例子
- {{#time:\m}}→
m
- {{#time:\xg}}→
x4
(x
被原样输出,g
被当作格式控制代码) - {{#time: Y-m-d}}→
2024-12-21
- {{#time:→[[Y]]m d}}
2024 12 21
- {{#time:→[[Y (year)]]}}
2024 (24UTCpmSat, 21 Dec 2024 16:45:41 +0000)
(year被当作格式控制代码y
、e
、a
、r
) - {{#time:→[[Y "(year)"]]}}
2024 (year)
- {{#time: i's"}}→
45'41"
- '日期/时间对象'可以使用任何PHP中strtotime()函数支持的格式。可以使用绝对时间(如
20 December 2000
)和相对时间(如+20 hours
):- {{#time: r|now}}→
Sat, 21 Dec 2024 16:45:42 +0000
- {{#time: r|+2 hours}}→
Sat, 21 Dec 2024 18:45:42 +0000
- {{#time: r|now + 2 hours}}→
Sat, 21 Dec 2024 18:45:42 +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}}→
1734799542
- {{#time: r|@1485582296}}→
Sat, 28 Jan 2017 05:44:56 +0000
- 注意:可接受的输入时间范围是0111年1月1日至9999年12月31日。100年到110年的各个格式控制代码的输出不一致:
Y
和L
按照100-110年来计算;但r
、D
、l
和U
是按照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
中星期输出为Unknown
,l
的输出为<>
,且这几年的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}}→
2024
- 注意:填补功能在不同情况下填补不同的内容:
- {{#time: Y m d H:i:s|June}}→
2024 06 21 00:00:00
(使用了一天的开始时刻,填补了当前月份内的日期号、年份) - {{#time: Y m d H:i:s|2003}}→
2003 12 21 00:00:00
(使用了一天的开始时刻,填补了当前年份内的日期号)
- 在MediaWiki r86805之后,4位数字一概会被认为是年份,而非小时与分钟:
- {{#time: Y m d H:i:s|1959}}→
1959 12 21 00:00:00
- 6位数字会被认为是小时、分钟和秒钟,如果得到的时间不正确,则会报错(一概不会当作年份和月份):
- {{#time: Y m d H:i:s|195909}}→
2024 12 21 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}}→
2024 11月
#time
中'格式字串'的总长度限制为6000字符。- 关于时区
- 解析函数
#time
中有一个bug(更确切的说是PHP日期时间的bug),不允许传入非整数的相对时差。这个问题在整点时区不会出现,如东部夏令时间(EDT):- {{#time:g:i A|-4 hours}}→
12:45 PM
- 但是,委内瑞拉(委内瑞拉标准时间,VET)与世界协调时间(UTC)的时差是-4.5小时,如果直接输入则不会得到正确的结果,如下:
- {{#time:g:i A|-4.5 hours}}→
1:45 AM
- 可以将时差转换为分钟或者秒钟来解决这个问题:
- {{#time:g:i A|-270 minutes}}→
12:15 PM
- {{#time:g:i A|-16200 seconds}}→
12:15 PM
- (上述方法由此函数开发者 Tim Starling 提供)
timel
与time一致,默认使用当地时间(在'日期/时间对象'留空时)。
出自扩展 ParserFunctions。
- 例子
- {{#time: Y-m-d}}→
2024-12-21
(世界协调时间,UTC) - {{#timel: Y-m-d}}→
2024-12-22
(北京时间,UTC+8) - {{#time: Y F d H:i:s}}→
2024 12月 21 16:45:41
(世界协调时间,UTC) - {{#timel: Y F d H:i:s}}→
2024 12月 22 00:45:41
(北京时间,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使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:扭蛋模拟器 - 突击莉莉终结之弹
- 模板:编辑提示 - 白荆回廊
- 模板:碧蓝回忆录/内容 - 碧蓝航线
- 模板:配队表 - 深空之眼
- 模板:誓灵图鉴 - 方舟指令
- 模板:首饰 - 激战2
- 模板:编辑提示 - 幻塔
- 模板:技能 - 梦幻模拟战
- 模板:Str find - 神甲奇兵
token
返回给定的字符串,其中所有出现的搜索词都被替换为替换词。
此功能与 replace 一样,但参数顺序相反。
出自扩展 ParserPower。
- 格式
- {{#token: 替换项|搜索项|源字符串}}
- 例子
- {{#token:Clown piece}}→
Clown piece
- {{#token:→<nowiki> </nowiki>|_|My_little_home_page}}
My little home page
tokenif
出自扩展ParserPower。
trim
出自扩展ParserPower。
trimuesc
出自扩展ParserPower。
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
- QUERY 空格变为
- 例子
- {{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
输出变量。 变量需要事先用vardefine或vardefineecho定义。
出自扩展 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使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:干员 - 明日方舟
- 模板:面包屑 - 明日方舟
- 模板:图鉴/再生者/立绘 - 地下城堡3
- 模板:怪物信息栏 - 古神遗产
- 模板:挑战副本图鉴 - 汉家江湖
- 模板:秘籍图鉴 - 汉家江湖
- 模板:Only - 开普勒斯
- 模板:角色图鉴 - 空之要塞:启航
- 模板:超导体图鉴 - 空之要塞:启航
- 模板:Anvil - 我的世界地下城
widget
- 参考官方文档和其他文档完善内容
- 增加实际用例和技巧
调用小部件(Widgets)。
Widgets允许用户创建HTML页面,能更灵活的为Wiki添加功能。
出自扩展 Widgets。
- 格式
- {{#widget: 小部件名|参数1=值1|参数2=值2|...|参数n=值n}}
- 例子
- 请参见Widgets。
参考资料