- 致编者:请牢记我们的域名wiki.mcbe-dev.net!
- 致编者:欢迎加入本Wiki的官方交流QQ群或Discord服务器!
- 基岩版1.19.31现已发布!(了解更多)
- Inner Core现已支持Xbox模组联机!(了解更多)
- 如果您是第一次来到本Wiki,欢迎注册一个账户
- 点击顶部的“编辑”或“编辑源代码”按钮即可编辑当前页面
- 请知悉:在不登录时也可以编辑和新建页面,但是您当前的IP地址会记录在编辑历史中
帮助:解析器函数
本页面主要介绍本Wiki内解析器函数(Parser Functions)(包括由扩展(Extensions)通过Parser::setFunctionHook
定义)的用途和用法。
格式[编辑]
解析器函数的基本格式为:
{{#函数名: 参数1 | 参数2 | ... | 参数n}}
函数名前带井号,其后由冒号开始依次传入参数,参数分隔符为管道符“|”;直接传入值的参数(未命名的参数)以数字依次命名(1、2、3……),其余有名称的参数使用等号连接参数名与值(即{{#函数名: 参数名 = 值}}
)。向页面中写入此代码后,后台会根据函数名调用对应函数并解析内容。解析器函数会优先运算和展开参数内的代码,即代码的解析顺序为由内到外逐一展开。
部分解析器函数不要求函数名前加上“#”,例如{{lc: ABC}}
。这使得解析器函数格式更简单。
部分解析器函数可以设置禁止传入参数自动展开,也可以强制解析器展开输出内容,这有助于参数复杂的嵌套函数代码非常有用,可以有效减少<nowiki>标签的使用,精简代码。解析器函数的第一个参数必定会自动被展开,在第一个参数的内容中使用<nowiki></nowiki>通常都会引致非预期的效果,应尽量避免。
三对花括号表示传入此页面的参数,例如:{{{1}}}
。其中可填入参数名,参数名可以是数字也可以是字符串,数字参数为未命名的参数。参数名后加一个管道符进行分隔,可在管道符右侧填写默认值,例如{{{1|default}}}
表示参数1的默认值为“default”这个字符串。
解析器函数的所有参数一般会被自动裁剪(即去掉头尾的空白字符,例如半形空格和换行),如果需要输入纯空白字符的或由空白字符开始或结束的字符串,应使用<nowiki></nowiki>包裹输入的内容。此特性使得参数内容的前后可以随意添加空格和换行,通过适当使用可以让排版更整齐易懂。
解析器函数中不能直接使用管道符“|”作为字符串输入,这会导致其被解析为函数语法。若需输入管道符应使用{{!}}
,例如:
{{#dplreplace: {{{1}}} | mo(d{{!}}b) | text}}
某些函数对“该参数的值为空白”及“缺少该参数”的理解会有差异,导致运算处理和最终输出出现差错,需要留意该函数有没有这种设定。如果函数突然出现不符合预期的输出,那很有可能是你忘记了对某些特殊字符转义。
函数[编辑]
anchorencode[编辑]
MediaWiki原生函数。
把输入的字符串转换成锚点编码,即网址栏中#号后面的文本。可用于生成锚点链接,但一般情况只需要[[页面名#锚点]]
就行了。
- 格式
{{anchorencode: 锚点字符串 }}
- 例子
{{anchorencode: 字符串}}
→字符串
{{anchorencode: ABC文本 def&456+1%}}
→ABC_文本_def&456+1%
BASEPAGENAME[编辑]
MediaWiki原生函数。
获取HTML编码后的上级页面名(不含命名空间),例如“Help:Title/foo/bar”会返回“Title/foo”。
- 格式
{{BASEPAGENAME: 页面名}}
BASEPAGENAMEE[编辑]
MediaWiki原生函数。
获取URL编码后的上级页面名(不含命名空间),例如“Help:Title/foo/bar”会返回“Title/foo”。
- 格式
{{BASEPAGENAMEE: 页面名}}
bidi[编辑]
MediaWiki原生函数。
标记双向书写字符串。
- 格式
{{bidi: 字符串}}
canonicalurl[编辑]
MediaWiki原生函数。
获取页面的完整超链接(包含域名和协议),可以选择加上请求字符串。
- 格式
{{canonicalurl: 页面名 | 请求字符串}}
- 例子
{{canonicalurl: 帮助:解析器函数}}
→https://wiki.mcbe-dev.net/p/Help:%E8%A7%A3%E6%9E%90%E5%99%A8%E5%87%BD%E6%95%B0
{{canonicalurl: 帮助:解析器函数 | action=edit}}
→https://wiki.mcbe-dev.net/w/index.php?title=Help:%E8%A7%A3%E6%9E%90%E5%99%A8%E5%87%BD%E6%95%B0&action=edit
canonicalurle[编辑]
MediaWiki原生函数。
获取页面的完整超链接(包含域名和协议),可以选择加上请求字符串。
- 格式
{{canonicalurle: 页面名 | 请求字符串}}
- 例子
{{canonicalurle: 帮助:解析器函数}}
→https://wiki.mcbe-dev.net/p/Help:%E8%A7%A3%E6%9E%90%E5%99%A8%E5%87%BD%E6%95%B0
{{canonicalurle: 帮助:解析器函数 | action=edit}}
→https://wiki.mcbe-dev.net/w/index.php?title=Help:%E8%A7%A3%E6%9E%90%E5%99%A8%E5%87%BD%E6%95%B0&action=edit
CASCADINGSOURCES[编辑]
MediaWiki原生函数。
返回特定页面级联保护的来源,一般情况并不会返回自身,除非该页面嵌入了自身。
- 格式
{{CASCADINGSOURCES: 页面名}}
- 例子
{{CASCADINGSOURCES: 首页}}
→{CASCADINGSOURCES: 首页/关于本站}}
→首页
(受到首页级联保护){{CASCADINGSOURCES: 沙盒}}
→
categorytree[编辑]
来自CategoryTree。
在页面中生成一个分类树,显示效果与分类页一致(例如“分类:Mojang图像”),并可以点击子分类前面的三角形展开子分类下的内容。
另外可以通过各种参数来调整显示方式和内容:
- mode参数
- 此参数用于筛选在列表中显示的子分类及页面,效果会被namespaces参数覆盖。可用值:
- categories:列表中只显示子分类,上限200个。
- pages:列表中只显示子分类和页面,不显示媒体文件,上限200个。
- all(默认值):列表中显示全部内容,包括子分类、页面和媒体文件,上限200个。
- parents:列表中只显示父分类。
- depth参数
- 此参数用于限制初始时子分类的最大嵌套显示深度,若为0则只会显示最顶级的那一层的分类(即输入的那个分类)。此参数只会限制初始时自动展开的嵌套层数(不过不管depth输入了多少,初始最多只会展开1层,也就是说实际上此参数只有0和1两个有效值),浏览时仍然可以通过点击子分类前面的三角形展开子分类下的内容。
- hideroot参数
- 若把此参数设为“on”(例
hideroot=on
),你输入的那个分类则不会被显示在列表中。 - hideprefix参数
- 此参数用于指定命名空间前缀的显示方式。可用值:
- always:隐藏所有前缀,应该只在能确定所有内容页均来自同一命名空间时才使用。
- never:显示所有前缀,分类的前缀也会被显示。
- auto:若列表中只包含分类,前缀均会被隐藏,否则将显示所有前缀。
- categories(默认值):隐藏分类的前缀,只显示分类以外的。
- showcount参数
- 若把此参数设为“on”(例
showcount=on
),所有分类名旁边均会显示内含页面的数量。 - namespaces参数
- 此参数用于按命名空间照筛选在列表中显示的页面,参数内容必须是一个以半形空格分隔的命名空间名称列表(例
namespaces=帮助 文件
),主空间可以用“-”或“0”表达。此参数会覆盖mode参数的效果。 - class、style、id等参数
- 此函数支持一般HTML属性,可以直接为列表添加class和style(例如让列表显示在右边可以用
style=float:right;
)。 - 格式
{{#categorytree: 分类名 | 参数1 | 参数2 | ... | 参数n }}
- 例子
{{#categorytree: 维护 | style = float:right;}}
→ 效果显示在右边
{{#categorytree: 维护 | mode = parents}}
→ 反向获取父分类
{{#categorytree: 维护 | depth = 0}}
→ 深度为0,点击分类前面的三角形展开。
{{#categorytree: 维护 | depth = 0 | hideprefix = never}}
→
{{#categorytree: 维护 | depth = 0 | showcount = on}}
→ 显示内容数量
{{#categorytree: 维护 | namespaces = 帮助 分类}}
→ 现在只显示帮助和分类空间下的页面(这个例子中的首页和文件会被隐藏)
count[编辑]
计算在给定字符串中特定子字符串出现的次数。子字符串为空时会使用单个半形空格为需要搜索的子字符串。需要搜索特殊字符时可以使用<nowiki></nowiki>标签。
- 格式
{{#count: 字符串 | 子字符串 }}
- 例子
{{#count:3.141592653589793238462643383|3}}
→7
{{#count:I like playing Minecraft}}
→3
{{#count:a, b, c, d | ,}}
→3
DEFAULTSORT[编辑]
MediaWiki原生函数。
设定页面默认在分类中的排序键,设定前默认为页面名,在添加分类时通过[[分类:分类名|排序键]]
可以覆写这个默认排序键。同一页面里有两次DEFAULTSORT的时候会导致报错,可以使用选项noerror来防止,noreplace则用来防止后面的DEFAULTSORT覆写前面的DEFAULTSORT。
- 格式
{{DEFAULTSORT: 排序键 | 选项(noerror或noreplace)}}
DISPLAYTITLE[编辑]
MediaWiki原生函数。
修改页面显示的标题,一般用于修正由页面名符号限制印制的大小写、底线、空格错误。
- 格式
{{DISPLAYTITLE: 页面标题字符串}}
dowhile[编辑]
来自Loops。
直到型循环。与while类似,但此函数保证表达式至少被解析一次,即在判断条件之前先进行解析。
- 格式
{{#dowhile: | 条件 | 表达式}}
注意第一个参数不填。
- 例子
{{#vardefine: i | 0}}{{#dowhile: | {{#ifexpr: {{#var: i}} < 5 | true}}{{#vardefine: i | {{#expr: {{#var: i }} + 1}}}} | <nowiki/> * {{#var: i}} }}
→ 按顺序生成数字列表。
- 0
- 1
- 2
- 3
- 4
- 5
dpl[编辑]
来自DynamicPageList3。
dplchapter[编辑]
来自DynamicPageList3。
截取一段文本中指定标题下的正文内容。可限制截取文本的最大字符数,如果截取内容超过设置的最大字符数,则会输出一个指向指定页面的链接,链接文本可自定义。
- 格式
{{#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。
通过缩进列表来生成一个矩阵视图。矩阵左上角是矩阵名称,第一行(顶部)和第一列(左侧)为各项目的链接,其余单元格展示项目的对应关系(“是”或“否”)。
- 格式
- 该函数有两个模式:“normal”和“flip”,其中“flip”表示交换行与列。缩进列表通过缩进来解析输入的项目,源项目(无缩进的项目)由上往下排列在矩阵的第一列,每个源项目下的目标项目(有任意宽度缩进的项目)按字符顺序由左往右排列在矩阵的第一行,同时与源项目对应形成“是”关系;通过在项目名后添加“~~”可自定义项目链接文本,文本写在“~~”后。
{{#dplmatrix: 矩阵名称 | 项目关系为“是”时显示的文本(默认为“x”) | 项目关系为“否”时显示的文本(默认为空) | 模式(默认为“normal”) | 缩进列表}}
- 例子
{{#dplmatrix: 伤害 |||| 玩家 ~~ Player 熔岩 ~~ Lava 箭 甜浆果丛 末影人 熔岩 ~~ Lava 水 甜浆果丛 僵尸猪灵 箭 甜浆果丛 狐狸 熔岩 ~~ Lava 箭 }}
→ 生成一个名为“伤害”的5x5大小的矩阵。
伤害 | 水 | Lava | 甜浆果丛 | 箭 |
---|---|---|---|---|
Player | x | x | x | |
末影人 | x | x | x | |
僵尸猪灵 | x | x | ||
狐狸 | x | x |
{{#dplmatrix: 伤害 | <big>•</big> | . | flip | 玩家 ~~ Player 熔岩 ~~ Lava 箭 甜浆果丛 末影人 熔岩 ~~ Lava 水 甜浆果丛 僵尸猪灵 箭 甜浆果丛 狐狸 熔岩 ~~ Lava 箭 }}
→ 生成一个反转行与列的矩阵。
伤害 | Player | 末影人 | 僵尸猪灵 | 狐狸 |
---|---|---|---|---|
水 | . | • | . | . |
Lava | • | • | . | • |
甜浆果丛 | • | • | • | . |
箭 | • | . | • | • |
dplnum[编辑]
来自DynamicPageList3。
尝试猜测并提取夹藏在文本中的数字。该函数使用一套启发式规则,它可能对文本有效,也可能无效。
- 格式
{{#dplnum: 字符串}}
- 例子
{{#dplnum:this is 4711 a text with a number}}
→4711
{{#dplnum:well above 47 Mio. US$}}
→47000000
{{#dplnum:13 Mrd}}
→13000000000
{{#dplnum:it is 47,123 Mio}}
→47123000
{{#dplnum:it is 47.123,56}}
→47123
{{#dplnum:it is 47,000}}
→47
{{#dplnum:it is 4.13}}
→413
{{#dplnum:it is 4,13}}
→4
{{#dplnum:it is 0,13}}
→0
dplreplace[编辑]
来自DynamicPageList3。
使用正则表达式匹配一段字符串并进行替换。此函数默认对大小写敏感。
- 格式
{{#dplreplace: 字符串 | 正则表达式 | 要替换成的字符串}}
- 例子
{{#dplreplace: Bedrock Edition | /ed([a-z]*)/i | _\1}}
→B_rock _ition
{{#dplreplace: aBCdefGhIJ | [a-z]}}
→BCGIJ
dplvar[编辑]
来自DynamicPageList3。
定义或读取变量的值。
- 格式
- 定义一个或多个变量并为其赋值或为已定义的变量赋值:
{{#dplvar: set | 变量1 | 变量1的值 | 变量2 | 变量2的值 | 变量n | 变量n的值}}
- 设置变量的默认值:
{{#dplvar: default | 变量名 | 默认值}}
- 读取指定变量的值:
{{#dplvar: 变量名}}
- 例子
{{#dplvar: set | a | 1 | b | 2 | c | 3}}{{#dplvar: default | a | aaaa}}{{#dplvar: default | d | dddd}}a={{#dplvar: a}}, b={{#dplvar: b}}, c={{#dplvar: c}}, d={{#dplvar: d}}
→a=1, b=2, c=3, d=dddd
editcount[编辑]
来自EditCountNeue。
输出指定用户在指定页面命名空间下的编辑量。不填写页面命名空间默认输出该用户全部页面的总编辑量。
- 格式
{{#editcount: 用户名 | 命名空间1 | 命名空间2 | …}}
- 例子
{{#editcount: Miemie Method}}
→8895
{{#editcount: Miemie Method | Manual}}
→2120
explode[编辑]
来自ParserFunctions。
将一个字符串用分隔符分割成多段,再返回指定位置的其中一段,此函数对大小写敏感。位置编号从0开始(即第一项位置序号为0)。如果位置参数为负数,则从末尾开始计数。分隔符在字符串连续出现会导致分割出多个空白段,它们仍对应有位置序号。
- 格式
{{#explode: 字符串 | 分隔符(默认为空格) | 位置}}
- 例子
{{#explode: 僵尸,苦力怕,末影人,骷髅 | ,| 2}}
→末影人
{{#explode: 泥土,箱子,西瓜,草方块 | ,| -1}}
→草方块
{{#explode: 0 1 2 3 4 5 6 || 5}}
→5
expr[编辑]
来自ParserFunctions。
用于验证一个数学表达式,并返回它的计算值。此函数在Scribunto扩展中也可用,函数名为mw.ext.ParserFunctions.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
|
- 格式
{{#expr: 表达式}}
- 支持的运算符如右方表格所示,表格从上到下按运算符的计算优先顺序排列。
- 每个运算符的详细功能见Help:Calculation。
- 计算结果的精度和格式取决于Wiki服务器的操作系统,和网站语言的数字格式。
- 例子
- 当用于计算布尔代数值(Boolean algebra)时,零值表示假,任何非零值,无论正负,都表示
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
- 魔术字
- 如果使用魔术字的输出值,必须使用其原始格式,如:移除所有分割逗号,转换为数字。
- 比如
{{NUMBEROFPAGES}}
输出的是6,246
,但是实际需要的是6246
,原始格式可以用{{formatnum:{{NUMBEROFPAGES}}|R}}
来得到,详见formatnum。例子如下:{{#expr:{{NUMBEROFPAGES}}+100}}
→表达式错误:无法识别的符号“,”。
{{#expr:{{formatnum:{{NUMBEROFPAGES}}|R}}+100}}
→6346
- 日期
- 若想要进行关于日期的计算(比如:将当前日期与某日期进行比较),首先应将时间转化为“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
filepath[编辑]
MediaWiki原生函数。
获取文件直接存放位置的超链接(包含域名),文件名无须包含命名空间,可以选择加上缩略图宽度要求或<nowiki>标签防止直接插入图片。
- 格式
{{filepath: 文件名 | 参数}}
- 例子
{{filepath: Inner_Core_icon.png}}
→https://wiki.mcbe-dev.net/w/images/6/6f/Inner_Core_icon.png
{{filepath: Inner_Core_icon.png | nowiki}}
→https://wiki.mcbe-dev.net/w/images/6/6f/Inner_Core_icon.png
{{filepath: Inner_Core_icon.png | 60}}
→https://wiki.mcbe-dev.net/w/thumb.php?f=Inner_Core_icon.png&width=60
forargs[编辑]
来自Loops。
按照指定前缀读取传入页面的参数名及其值,并储存到变量(可通过Variables扩展的var函数来访问)中,然后对每个参数的传入执行一次给定的表达式。此解析器函数一般用于模板。
- 格式
{{#forargs: 参数前缀 | 储存参数名的变量 | 储存参数传入值的变量 | 表达式}}
- 例子
- 假设在“Template:Loops Test”模板中写入以下内容:
{{#forargs: arg | key | value | <nowiki/> * {{#var: key}} = {{#var: value}} }}
- 则在其他页面调用此模板时:
{{Loops Test | arg1 = val1 | spam = spammity | arg5 = val5 | argument = value }}
→ 输出“arg”前缀的参数名及其值。
- 1 = val1
- 5 = val5
- ument = value
formatdate[编辑]
MediaWiki原生函数。
将输入的日期格式化,输入的日期只接受YYYY-MM-DD(ISO 8601,必须都有前导零)的格式,而输出则支持各种格式,包括ISO 8601、dmy、mdy和ymd。如果格式化的时候出现错误,将会原封不动返回输入的日期。
- 格式
{{#formatdate: 日期 | 格式}}
- 例子
{{#formatdate: 2009-05-17 | ISO 8601}}
→2009-05-17
{{#formatdate: 2009-05-17 | dmy}}
→17 5月 2009
{{#formatdate: 2009-05-17 | mdy}}
→5月 17, 2009
{{#formatdate: 2009-05-17 | ymd}}
→2009 5月 17
{{#formatdate: 2009-05-17 | myd}}
→2009-05-17
(不支持的格式){{#formatdate: 2009-5-17 | myd}}
→2009-5-17
(输入不符合ISO 8601,月份缺少前导零)
formatnum[编辑]
MediaWiki原生函数。
将输入的数字格式化,不输入格式的话默认为一般逗号分隔(其他语言可能有别)的格式,输入R会还原成无格式化的形式。此函数并不会去掉前导零,也不会为小数添加前导零。不要输入数字以外的东西。
- 格式
{{formatnum: 数字 | 格式}}
- 例子
{{formatnum: 12345.678}}
→12,345.678
{{formatnum: 12,345.678 | R}}
→12345.678
{{formatnum: 00145.678 }}
→00,145.678
{{formatnum: .678}}
→.678
fornumargs[编辑]
来自Loops。
读取传入页面的数字参数的值,并储存到变量(可通过Variables扩展的var函数来访问)中,然后对每个参数的传入执行一次给定的表达式。此解析器函数一般用于模板。
- 格式
{{#fornumargs: 储存参数序号的变量 | 储存参数传入值的变量 | 表达式 }}
- 例子
- 假设在“Template:Loops Test”模板中写入以下内容:
{{#fornumargs: number | value | <nowiki/> * {{#var: key}} = {{#var: value}} }}
- 则在其他页面调用此模板时:
{{Loops Test | Block | B = Item | Entity | 5 = World }}
→ 输出参数序号和参数值。
- 1 = Block
- 2 = Entity
- 5 = World
FULLPAGENAME[编辑]
MediaWiki原生函数。
获取HTML编码后的页面全名(包含命名空间)。
- 格式
{{FULLPAGENAME: 页面名}}
FULLPAGENAMEE[编辑]
MediaWiki原生函数。
获取URL编码后的页面全名(包含命名空间)。
- 格式
{{FULLPAGENAMEE: 页面名}}
fullurl[编辑]
MediaWiki原生函数。
获取页面的完整超链接(包含域名),可以选择加上请求字符串。
- 格式
{{fullurl: 页面名 | 请求字符串}}
- 例子
{{fullurl: 帮助:解析器函数}}
→https://wiki.mcbe-dev.net/p/Help:%E8%A7%A3%E6%9E%90%E5%99%A8%E5%87%BD%E6%95%B0
{{fullurl: 帮助:解析器函数 | action=edit}}
→https://wiki.mcbe-dev.net/w/index.php?title=Help:%E8%A7%A3%E6%9E%90%E5%99%A8%E5%87%BD%E6%95%B0&action=edit
fullurle[编辑]
MediaWiki原生函数。
获取页面的完整超链接(包含域名),可以选择加上请求字符串。
- 格式
{{fullurle: 页面名 | 请求字符串}}
- 例子
{{fullurle: 帮助:解析器函数}}
→https://wiki.mcbe-dev.net/p/Help:%E8%A7%A3%E6%9E%90%E5%99%A8%E5%87%BD%E6%95%B0
{{fullurle: 帮助:解析器函数 | action=edit}}
→https://wiki.mcbe-dev.net/w/index.php?title=Help:%E8%A7%A3%E6%9E%90%E5%99%A8%E5%87%BD%E6%95%B0&action=edit
gender[编辑]
获取特定用户的性别,然后根据性别返回不同的值(男性、女性或未知)。若未输入未知返回值,未知时则会返回男性返回值。
- 格式
{{gender: 用户名 | 男性返回值 | 女性返回值 | 未知返回值}}
grammar[编辑]
MediaWiki原生函数。
根据条件为输入的单词选择一个语法正确的变化体。
- 格式
{{grammar: 条件 | 单词}}
if[编辑]
来自ParserFunctions。
用于判断一个测试字符串是否为空。一个只含有空白字符的字符串会被判定为空。
- 格式
{{#if: 表达式 | 表达式结果非空输出值 | 表达式结果空(或只有空白字符)输出值}}
- 例子
{{#if: | yes | no}}
→no
{{#if: string | yes | no}}
→yes
{{#if: | yes | no}}
→no
{{#if:
→
| yes | no}}no
- 最后一个参数(字符串空输出值)可以省略。
{{#if: foo | yes}}
→yes
{{#if: | yes}}
→{{#if: foo | | no}}
→
ifeq[编辑]
来自ParserFunctions。
用于比较两个字符串是否相同。
- 格式
{{#ifeq: 表达式 | 比较值 | 相同时输出值 | 不相同时输出值}}
- 例子
- 如果两个字符串都是有效的数值,则会按照数值进行比较。
{{#ifeq: 01 | 1 | equal | not equal}}
→equal
{{#ifeq: 0 | -0 | equal | not equal}}
→equal
{{#ifeq: 1e3 | 1000 | equal | not equal}}
→equal
{{#ifeq: {{#expr:10^3}} | 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
#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
- 如果被比较的字符串是由等价调用含有这类标签的同一模板得到的,则值为真;但如果为含有相同的这类标签的两个模板,则值为假。
iferror[编辑]
来自ParserFunctions。
用于判断输入字符串是否为错误。如果输入字符串中含有HTML元素包含class="error"
,则会被当作真,否则为假。
class="error"
能由其他解析器函数,如expr、time、rel2abs产生,模板(Templates)错误,如循环、递归和其他解析器也能产生错误。
- 格式
{{#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
ifexist[编辑]
来自ParserFunctions。
此函数将输入字符串当作页面标题。根据本地Wiki是否存在该标题的页面,返回两个值中的一个。
- 格式
{{#ifexist: 页面标题 | 页面存在输出值 | 页面不存在输出值}}
- 例子
- 此函数当页面存在时判定为真,不论它是否包含内容,是否为可见空白页(包含元数据,如分类链接和魔术字(Magic words),但不含可见内容),是否为空白页,是否为重定向页。
- 只有链接为红色的页面(页面不存在,如“帮助:自动写代码”),才会被判定为假,包括曾经存在但已经被删除的页面。
{{#ifexist: 帮助:解析器函数 | exists | doesn't exist}}
→exists
{{#ifexist: 帮助:自动写代码 | exists | doesn't exist}}
→doesn't exist
- 自定义过的系统消息页(System message)和由软件定义的特殊页(Special pages)会被判定为真。
{{#ifexist: 特殊:监视列表 | exists | doesn't exist}}
→exists
{{#ifexist: 特殊:用户查核 | exists | doesn't exist}}
→exists
(安装了CheckUser){{#ifexist: MediaWiki:Copyright | exists | doesn't exist}}
→exists
(MediaWiki:Copyright页面已被自定义)
- 如果一个页面使用该函数来检查目标页面是否存在,则该页面会出现在特殊:链入页面中目标页面的列表里。
- 所以如果本页面(Help:解析器函数)中存在
{{#ifexist:手册:脚本API}}
,则在特殊:链入页面/手册:脚本API中,会包含Help:解析器函数
。 - 在使用了共享媒体存储库(Shared media repository)的Wiki上,该函数还可以用来检查文件是否被上传到指定的存储库,而不是Wiki自身。
- 该函数不对跨Wiki链接起作用。
- 限制
- 该函数被认为是一个“高开销解析器函数”;每个页面只能包含有限个这样的函数(包括模板中含的函数)。当超过限制的数量时,任何超出数量的ifexist函数会被自动判定为假,不论目标页面是否存在。并且页面会被添加至分类:有过多高开销解析器函数调用的页面。各个追踪分类(Tracking categories)的名字在不同语言的Wiki内可能有所不同。
ifexpr[编辑]
来自ParserFunctions。
此函数会计算一个表达式,并根据计算结果的布尔值,返回对应的字符串。
- 格式
{{#ifexpr: 表达式 | 为真输出值 | 为假输出值}}
- “表达式”的计算方法和expr完全一样,可用的运算符也相同。运算结果会被当作一个布尔值。
- 例子
- 输入任何空表达式会判断为假:
{{#ifexpr: | yes | no}}
→no
- 与expr相同,零值会被判断为假,任何非零值都会被判断为真。
- 两个输出值可省略其一或两者都省略。当输出值被省略时,会输出为空。
{{#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}}
→
int[编辑]
MediaWiki原生函数。
获取特定Message在当前语言中的内容,并可以提供多个参数(各个参数会按顺序分别替换掉Message内容中的$1、$2、...和$N),Message可以用扩展及Mediawiki命名空间定义。
- 格式
{{int: Message名称 | 参数1 | 参数2 | ... | 参数N}}
- 例子
{{int: edit}}
→编辑
{{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[编辑]
来自Scribunto。
用于调用Wiki模块页面Lua代码中的函数,并向其中传参。详细内容参见Extension:Scribunto。
- 格式
{{#invoke: 模块名 | 函数名 | 参数1 | 参数2 | … | 参数n}}
language[编辑]
MediaWiki原生函数。
根据输入的语言代号获取对应的语言全名。
- 格式
{{#language: 语言代号}}
- 例子
{{#language: zh}}
→中文
{{#language: zh-hans}}
→中文(简体)
{{#language: zh-hant}}
→中文(繁體)
{{#language: en}}
→English
{{#language: ja}}
→日本語
lc[编辑]
MediaWiki原生函数。
把输入的字符串中所有字母变成小写。
- 格式
{{lc: 字符串}}
- 例子
{{lc: ABC}}
→abc
lcfirst[编辑]
MediaWiki原生函数。
把输入的字符串中第一个字母变成小写。
- 格式
{{lcfirst: 字符串}}
- 例子
{{lcfirst: MINECRAFT}}
→mINECRAFT
len[编辑]
来自ParserFunctions。
获取字符串长度(多字节字符也算作一个字),字符串前后的空格和回车均不会计入长度,若输入的字符串中有HTML实体( 等),该实体将不会被转换成一般文字,而是按原形计算。被<nowiki>包裹的内容不会计入长度。
- 格式
{{#len: 字符串}}
- 例子
{{#len: Minecraft基岩版}}
→12
{{#len: }}
→11
{{#len: <nowiki>;This is a </nowiki>;test}}
→4
localurl[编辑]
MediaWiki原生函数。
获取页面的本地超链接(不含域名),可以选择加上请求字符串。
- 格式
{{localurl: 页面名 | 请求字符串}}
- 例子
{{localurl: 帮助:解析器函数}}
→/p/Help:%E8%A7%A3%E6%9E%90%E5%99%A8%E5%87%BD%E6%95%B0
{{localurl: 帮助:解析器函数 | action=edit}}
→/w/index.php?title=Help:%E8%A7%A3%E6%9E%90%E5%99%A8%E5%87%BD%E6%95%B0&action=edit
localurle[编辑]
MediaWiki原生函数。
获取页面的本地超链接(不含域名),可以选择加上请求字符串。
- 格式
{{localurle: 页面名 | 请求字符串}}
- 例子
{{localurle: 帮助:解析器函数}}
→/p/Help:%E8%A7%A3%E6%9E%90%E5%99%A8%E5%87%BD%E6%95%B0
{{localurle: 帮助:解析器函数 | action=edit}}
→/w/index.php?title=Help:%E8%A7%A3%E6%9E%90%E5%99%A8%E5%87%BD%E6%95%B0&action=edit
loop[编辑]
来自Loops。
定义一个初始变量(可通过Variables扩展的var函数来访问)及初始值并循环解析给定的表达式,每执行一次变量递增或递减1(循环次数为负数时表示递减),直到循环完成指定次数。
- 格式
{{#loop: 变量名 | 初始值 | 循环次数 | 表达式}}
- 例子
{{#loop: i | 3 | 4 | <nowiki/> * {{#var: i}} }}
→ 按顺序从3开始生成数字列表。
- 3
- 4
- 5
- 6
NAMESPACE[编辑]
MediaWiki原生函数。
获取HTML编码后的页面命名空间。
- 格式
{{NAMESPACE: 页面名}}
NAMESPACEE[编辑]
MediaWiki原生函数。
获取URL编码后的页面命名空间。
- 格式
{{NAMESPACEE: 页面名}}
NAMESPACENUMBER[编辑]
MediaWiki原生函数。
获取页面命名空间编号。
- 格式
{{NAMESPACENUMBER: 页面名}}
ns[编辑]
MediaWiki原生函数。
获取命名空间在当前语言中的名称,可以使用命名空间编号、命名空间名称、别名获取。
- 格式
{{ns: 命名空间}}
- 例子
{{ns: -2}}
→Media
{{ns: -1}}
→Special
{{ns: Special}}
→Special
{{ns: 特殊}}
→Special
{{ns: 10}}
→Template
{{ns: 11}}
→Template talk
{{ns: Category}}
→Category
nse[编辑]
MediaWiki原生函数。
获取URL编码后,命名空间在当前语言中的名称,可以使用命名空间编号、命名空间名称、别名获取。
- 格式
{{nse: 命名空间}}
NUMBERINGROUP[编辑]
MediaWiki原生函数。
获取属于特定群组的人数。
- 格式
{{NUMBERINGROUP: 群组名称}}
- 例子
{{NUMBERINGROUP: bureaucrat}}
→2
{{NUMBERINGROUP: confirm}}
→0
{{NUMBERINGROUP: sysop}}
→4
NUMBEROFACTIVEUSERS[编辑]
MediaWiki原生函数。
获取当前活跃的用户数量,与“特殊:统计信息”中显示的一致。
- 格式
{{NUMBEROFACTIVEUSERS}}
NUMBEROFADMINS[编辑]
MediaWiki原生函数。
获取管理员数量,与“特殊:统计信息”中显示的一致。
- 格式
{{NUMBEROFADMINS}}
NUMBEROFARTICLES[编辑]
MediaWiki原生函数。
获取内容页面数量,与“特殊:统计信息”中显示的一致。
- 格式
{{NUMBEROFARTICLES}}
NUMBEROFARTICLES[编辑]
MediaWiki原生函数。
获取内容页面数量,与“特殊:统计信息”中显示的一致。
- 格式
{{NUMBEROFARTICLES}}
NUMBEROFEDITS[编辑]
MediaWiki原生函数。
获取总编辑次数,与“特殊:统计信息”中显示的一致。
- 格式
{{NUMBEROFEDITS}}
NUMBEROFFILES[编辑]
MediaWiki原生函数。
获取媒体文件数量,与“特殊:统计信息”中显示的一致。
- 格式
{{NUMBEROFFILES}}
NUMBEROFPAGES[编辑]
MediaWiki原生函数。
获取所有页面数量,与“特殊:统计信息”中显示的一致。
- 格式
{{NUMBEROFPAGES}}
NUMBEROFUSERS[编辑]
MediaWiki原生函数。
获取用户数量,与“特殊:统计信息”中显示的一致。
- 格式
{{NUMBEROFUSERS}}
padleft[编辑]
MediaWiki原生函数。
往字符串左边填充指定字符直到一定长度(多字节字符也算一个字。原字符串为空时重复输出填充字符串;如果原字符串长度比需要的长度长,则不会做任何处理。
- 格式
{{padleft: 原字符串 | 需要的长度(字符数) | 填充字符串(默认为0)}}
- 例子
{{padleft: 15 | 5}}
→00015
{{padleft: abc | 5}}
→00abc
{{padleft: 原字符串 | 10 | 填}}
→填填填填填填原字符串
{{padleft: 原字符串 | 10 | 填充}}
→填充填充填充原字符串
{{padleft: | 5 | 玩家}}
→玩家玩家玩
{{padleft: | 7 | 苦力怕}}
→苦力怕苦力怕苦
{{padleft: 这是一段较长的文本 | 5 | 填}}
→这是一段较长的文本
padright[编辑]
MediaWiki原生函数。
往字符串右边填充指定字符直到一定长度(多字节字符也算一个字。原字符串为空时重复输出填充字符串;如果原字符串长度比需要的长度长,则不会做任何处理。
- 格式
{{padright: 原字符串 | 需要的长度(字符数) | 填充字符串(默认为0)}}
- 例子
{{padright: 15 | 5}}
→15000
{{padright: abc | 5}}
→abc00
{{padright: 原字符串 | 10 | 填}}
→原字符串填填填填填填
{{padright: 原字符串 | 10 | 填充}}
→原字符串填充填充填充
{{padright: | 5 | 玩家}}
→玩家玩家玩
{{padright: | 7 | 苦力怕}}
→苦力怕苦力怕苦
{{padright: 这是一段较长的文本 | 5 | 填}}
→这是一段较长的文本
PAGEID[编辑]
MediaWiki原生函数。
获取页面的编号,该编号是唯一的,可以用来辨别页面和生成随机数。
- 格式
{{PAGEID: 页面名}}
PAGENAME[编辑]
MediaWiki原生函数。
获取HTML编码后的页面名(不含命名空间)。
- 格式
{{PAGENAME: 页面名}}
PAGENAMEE[编辑]
MediaWiki原生函数。
获取URL编码后的页面名(不含命名空间)。
- 格式
{{PAGENAMEE: 页面名}}
PAGESINCATEGORY[编辑]
MediaWiki原生函数。
返回属于指定分类的项目数量,可以用包含类型来筛选项目类型,可以使用pages(词条)、subcats(子分类)、files(文件)和all(全部)。
- 格式
{{PAGESINCATEGORY: 分类名 | 包含类型(默认为all)}}
PAGESIZE[编辑]
MediaWiki原生函数。
获取页面的大小,以字节为单位。默认返回带格式的数值,格式设置为“R”可以获取未格式化的数值;页面不存在则返回0。
- 格式
{{PAGESIZE: 词条名 | 格式}}
- 例子
{{PAGESIZE: Molang}}
→27,330
{{PAGESIZE: Molang | R}}
→27330
plural[编辑]
MediaWiki原生函数。
若输入的数字等于1,判定为单数,否则判定为复数,0也算作复数,部分语言还会有第三种情况。
- 格式
{{plural: 数字公式 | 单数返回值 | 负数返回值 }}
- 例子
{{plural: 1 | 单数 | 复数}}
→单数
{{plural: 2 | 单数 | 复数}}
→复数
{{plural: {{#expr:21 mod 10}} | is | are}}
→is
pos[编辑]
来自ParserFunctions。
在长字符串中寻找一段较短的字符串,并返回其首次出现的位置(左边开始第一个字是0,由左至右搜索,需由右至左搜索请使用rpos),没有出现则返回空。也可以通过设定偏移量,让pos从长字符串中第N个字符开始搜索。pos会把<nowiki>和里面的内容当作一个长度为1个字符、不匹配任何东西的字符串。此函数区分大小写。
- 格式
{{#pos: 长字符串 | 搜索字符串 | 偏移量(默认为0)}}
- 例子
{{#pos: 这是长字符串 | 字符串}}
→3
{{#pos: 这是长字符串长 | 长}}
→2
{{#pos: 这是长字符串长 | 长 | 4}}
→6
{{#pos: 这是长字符串 | 数}}
→
PROTECTIONEXPIRY[编辑]
MediaWiki原生函数。
查询页面对于指定操作的保护状态的终止时间,有限期则会返回终止时间的时间戳(例如:“20200401160000”),无限期或没有保护则返回“infinity”。操作可以是edit或move。使用第二个参数可以指定页面名,不指定页面名的话默认为本页面。
- 格式
{{PROTECTIONEXPIRY: 操作 | 页面名}}
- 例子
{{PROTECTIONEXPIRY: edit}}
→infinity
(没有保护){{PROTECTIONEXPIRY: move}}
→infinity
(没有保护){{PROTECTIONEXPIRY: edit | 首页}}
→infinity
(无限期保护){{PROTECTIONEXPIRY: move | 首页}}
→infinity
(无限期保护)
PROTECTIONLEVEL[编辑]
MediaWiki原生函数。
查询页面对于指定操作的保护状态(进行该操作所需的最低权限群组,autoconfirmed、sysop等),操作可以是edit或move,没有保护则返回空字符串。使用第二个参数可以指定页面名,不指定页面名的话默认为本页面。
- 格式
{{PROTECTIONLEVEL: 操作 | 页面名}}
- 例子
{{PROTECTIONLEVEL: edit}}
→{{PROTECTIONLEVEL: move}}
→{{PROTECTIONLEVEL: edit | 首页}}
→sysop
{{PROTECTIONLEVEL: move | 首页}}
→sysop
rel2abs[编辑]
来自ParserFunctions。
将相对路径转换为绝对路径。
- 格式
{{#rel2abs: 相对路径}}
{{#rel2abs: 相对路径 | 基础路径}}
- “相对路径”支持下列格式:
.
→ 当前路径级别..
→ “至上一级路径”/foo
→ “至下一级子目录 /foo”
- 如果“基础路径”没有被指定,则会使用当前页面的完整页面名称(可使用
{{FULLPAGENAME}}
获得,本页为Help:解析器函数
)。 - 例子
- 一般情况如下:
{{#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”(尝试访问根节点以上节点)
replace[编辑]
来自ParserFunctions。
在字符串中搜索某个字符串并将其替换成指定的字符串。若替换字符串为空,则相当于把搜索到的字符串删除。此函数对大小写敏感。若要使用特殊字符串,请用“<nowiki></nowiki>”
- 格式
{{#replace: 字符串 | 要搜索的字符串(默认为单个半形空格) | 替换成的字符串}}
- 例子
{{#replace: Script API}}
→ScriptAPI
{{#replace: Cut_Copper_Slab | _ | }}
→CutCopperSlab
REVISIONDAY[编辑]
MediaWiki原生函数。
获取页面当前版本的编写日,无前导零。
- 格式
{{REVISIONDAY: 页面名}}
- 例子
{{REVISIONDAY: 页面名}}
→3
REVISIONDAY2[编辑]
MediaWiki原生函数。
获取页面当前版本的编写日,有前导零。
- 格式
{{REVISIONDAY2: 页面名}}
- 例子
{{REVISIONDAY2: 页面名}}
→03
REVISIONID[编辑]
MediaWiki原生函数。
获取页面当前版本的编号,该编号在全页面全版本中都是唯一的,且是顺序生成的,可用于检查两个页面当前版本的编写先后。
- 格式
{{REVISIONID: 页面名}}
- 例子
{{REVISIONID: 页面名}}
→23467
REVISIONMONTH[编辑]
MediaWiki原生函数。
获取页面当前版本的编写月份,有前导零。
- 格式
{{REVISIONMONTH: 页面名}}
- 例子
{{REVISIONMONTH: 页面名}}
→08
REVISIONMONTH1[编辑]
MediaWiki原生函数。
获取页面当前版本的编写月份,无前导零。
- 格式
{{REVISIONMONTH1: 页面名}}
- 例子
{{REVISIONMONTH1: 页面名}}
→8
REVISIONTIMESTAMP[编辑]
MediaWiki原生函数。
获取页面当前版本的编写日期时间戳,格式为YYYYMMDDHHMMSS。
- 格式
{{REVISIONTIMESTAMP: 页面名}}
- 例子
{{REVISIONTIMESTAMP: 页面名}}
→20231028070922
REVISIONUSER[编辑]
MediaWiki原生函数。
获取页面当前版本的编写者的用户名。
- 格式
{{REVISIONUSER: 页面名}}
- 例子
{{REVISIONUSER: 页面名}}
→Miemie Method
REVISIONYEAR[编辑]
MediaWiki原生函数。
获取页面当前版本的编写年份。
- 格式
{{REVISIONYEAR: 页面名}}
- 例子
{{REVISIONYEAR: 页面名}}
→2023
ROOTPAGENAME[编辑]
MediaWiki原生函数。
获取HTML编码后的根页面页面名(不含命名空间),例如“Help:Title/foo/bar”会返回“Title”。
- 格式
{{ROOTPAGENAME: 页面名}}
ROOTPAGENAMEE[编辑]
MediaWiki原生函数。
获取URL编码后的根页面页面名(不含命名空间),例如“Help:Title/foo/bar”会返回“Title”。
- 格式
{{ROOTPAGENAMEE: 页面名}}
rpos[编辑]
来自ParserFunctions。
在长字符串中寻找一段较短的字符串,并返回其首次出现的位置(左边开始第一个字是0,由右至左搜索,需由左至右搜索请使用pos),不能设置偏移量,其他特性与pos一致。
- 格式
{{#rpos: 长字符串 | 搜索字符串}}
- 例子
{{#rpos: 这是长字符串 | 字符串}}
→3
{{#rpos: 这是长字符串长 | 长}}
→6
{{#rpos: 这是长字符串 | 数}}
→
special[编辑]
MediaWiki原生函数。
获取指定的特殊页面在当前语言中的全名(包含命名空间)。
- 格式
{{#special: 特殊页面}}
- 例子
{{#special: 特殊页面名称}}
→Special:特殊页面
{{#special: specialpages}}
→Special:特殊页面
{{#special: userlogin}}
→Special:用户登录
speciale[编辑]
MediaWiki原生函数。
获取指定的特殊页面在当前语言中URL编码后的全名(包含命名空间)。
- 格式
{{#speciale: 特殊页面名称}}
- 例子
{{#speciale: 特殊页面}}
→Special:%E7%89%B9%E6%AE%8A%E9%A1%B5%E9%9D%A2
{{#speciale: specialpages}}
→Special:%E7%89%B9%E6%AE%8A%E9%A1%B5%E9%9D%A2
{{#speciale: userlogin}}
→Special:%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95
sub[编辑]
来自ParserFunctions。
用于从给定字符串中截取子字符串。
- 格式
{{#sub: 原字符串 | 起始位置 | 长度}}
- 例子
- 如果“起始位置”为正数(或者为零),则从字符串开头开始(第一个字符位置序号为0),返回相应的字符串:
{{#sub: Minecraft | 3}}
→ecraft
{{#sub: Minecraft | 0 | 3}}
→Min
- 如果“起始位置”为负数,则从字符串末尾开始,返回相应长度的字符串:
{{#sub: Minecraft | -3}}
→aft
- “长度”如果出现,并且为正数,则表示返回字符串的最大长度:
{{#sub: Minecraft | 3 | 3}}
→ecr
- 如果“长度”为负数,则表示从字符串末尾略去几个字符:
{{#sub: Minecraft | 3 | -3}}
→ecr
- 如果“长度”是零,则不会起作用:
{{#sub: Minecraft | 3 | 0}}
→ecraft
{{#sub: Minecraft | 0 | 3}}
→Min
- 如果“起始位置”指定的位置,落在负的“长度”所略去的字符上,则会返回空字符串:
{{#sub: Minecraft | 3 | -6}}
→(空字符串)
- 此函数兼容UTF-8多字节字符,如:
{{#sub: Jon Kågström | 5}}
→ågström
- 类似len,
<nowiki>
等标签扩展,不计长度,也不占位置序号,如:{{#sub: <nowiki>This is a </nowiki>test | 0}}
→test
SUBJECTPAGENAME[编辑]
MediaWiki原生函数。
获取HTML编码后的关联页面的全名(包含命名空间),关联页面即讨论页的所属的页面。
- 格式
{{SUBJECTPAGENAME: 页面名}}
SUBJECTPAGENAMEE[编辑]
MediaWiki原生函数。
获取URL编码后的关联页面的全名(包含命名空间),关联页面即讨论页的所属的页面。
- 格式
{{SUBJECTPAGENAMEE: 页面名}}
SUBJECTSPACE[编辑]
MediaWiki原生函数。
获取HTML编码后的关联页面的命名空间,关联页面即讨论页的所属的页面。
- 格式
{{SUBJECTSPACE: 页面名}}
SUBJECTSPACEE[编辑]
MediaWiki原生函数。
获取URL编码后的关联页面的命名空间,关联页面即讨论页的所属的页面。
- 格式
{{SUBJECTSPACEE: 页面名}}
SUBPAGENAME[编辑]
MediaWiki原生函数。
获取HTML编码后的子页面的名称(不含命名空间),例如“Help:Title/foo/bar”会返回“bar”。
- 格式
{{SUBPAGENAME: 页面名}}
SUBPAGENAMEE[编辑]
MediaWiki原生函数。
获取URL编码后的子页面的名称(不含命名空间),例如“Help:Title/foo/bar”会返回“bar”。
- 格式
{{SUBPAGENAMEE: 页面名}}
switch[编辑]
来自ParserFunctions。
将输入值与若干个预设值对比,如果与预设值相匹配,则返回该预设值对应的输出字符串。
- 格式
{{#switch: 输入值 | 预设值1 = 对应值1 | 预设值2 = 对应值2 | ... | 预设值n = 对应值n | 默认值 }}
- 例子
{{#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: test | foo = Foo | baz = Baz | Bar}}
→Bar
- 此语法下“默认值”必须是最后一个参数,并且不能包含等号,需使用等号作为字符串或其中一部分请使用
{{=}}
。{{#switch: test | Bar | foo = Foo | baz = Baz}}
→{{#switch: test | foo = Foo | baz = Baz | B=ar}}
→
- “默认值”可以用
#default
来特别声明。 {{#switch: 输入值 | 预设值1 = 对应值1 | 预设值2 = 对应值2 | ... | 预设值n = 对应值n | #default = 默认值 }}
- 用这种方式声明下的“默认值”可以放在函数内的任何位置:
{{#switch: test | foo = Foo | #default = Bar | baz = Baz}}
→Bar
- 如果“默认值”被省略,当没有相符情况时,不会对应值:
{{#switch: test | foo = Foo | baz = Baz}}
→
- 多项匹配
- 当有多个“预设值”需返回同一个“对应值”时,每两个“预设值”之间使用管道符分隔。
{{#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
的数值比较方法与表达式比较不同:{{#switch: 12345678901234567 | 12345678901234568 = A | B}}
→B
{{#ifexpr: 12345678901234567 = 12345678901234568 | A | B}}
→A
tag[编辑]
MediaWiki原生函数。
生成一个XML标签(只能是解析器扩展标签),可以设定其标签类型、内文和属性。有时候一些XML标签形式的解析器结构(即解析器扩展标签),不会解析和运算其内文,导致其无法在模板中使用或配合其他解析器结构使用(如tabber),此时则需要利用tag函数,生成一个内文已经解析了的标签。
- 格式
{{#tag: 标签类型 | 内文 | 属性}}
- 例子
{{#tag: nowiki | 这是nowiki里面,{{padleft: | 5 | 一二}}切运算都有效}}
→这是nowiki里面,一二一二一切运算都有效
{{#tag: ref | 这是备注里面,{{padleft:|5|一二}}切运算都有效 | name="tag" group="tag"}}
→[1]
- ↑ 这是备注里面,一二一二一切运算都有效
{{#tag: references || group="tag"}}
→
TALKPAGENAME[编辑]
MediaWiki原生函数。
获取HTML编码后的讨论页页面全名(包含命名空间)。
- 格式
{{TALKPAGENAME: 页面名}}
TALKPAGENAMEE[编辑]
MediaWiki原生函数。
获取URL编码后的讨论页页面全名(包含命名空间)。
- 格式
{{TALKPAGENAMEE: 页面名}}
TALKSPACE[编辑]
MediaWiki原生函数。
获取HTML编码后的讨论页页面命名空间。
- 格式
{{TALKSPACE: 页面名}}
TALKSPACEE[编辑]
MediaWiki原生函数。
获取URL编码后的讨论页页面命名空间。
- 格式
{{TALKSPACEE: 页面名}}
time[编辑]
来自ParserFunctions。
将日期或时间(公历)按格式字符串规定的格式进行转换。可自行指定日期/时间对象,默认使用魔术字(Magic word){{CURRENTTIMESTAMP}}
的值(该值使用世界协调时间,UTC),也就是页面最近一次渲染为HTML的时间。详细内容参见Help:Extension:ParserFunctions。
代码 | 说明 | 当前输出值 (清除此页面缓存以更新结果) |
---|---|---|
年 | ||
Y
|
4位数表示的年。 | 2024 |
y
|
2位数表示的年。 | 24 |
L
|
1表示闰年(Leap year),0表示非闰年。 | 1 |
o [注 1]
|
ISO-8601规定的该周所属年份。[注 2] | 2024[注 3] |
月 | ||
n
|
月份号,无前导零。 | 5 |
m
|
月份号,有前导零。 | 05 |
M
|
月份名称缩写,使用网站语言。(英文结果为 May )
|
5月 |
F
|
月份名称全称,使用网站语言。(英文结果为 May )
|
5月 |
xg
|
月份名称全称,使用网站语言的属格(Genitive)形式,注意区分其与主格(Nominative)形式的区别。 这项功能在斯拉夫语族(Slavic languages)中十分重要,如波兰语、俄语、白俄罗斯语、捷克语、斯洛伐克语、斯洛文尼亚语、乌克兰语等。 在中文环境下: |
对于中文:
(主格) (属格) |
周 | ||
W
|
ISO 8601 规定的周数,有前导零。 | 19 |
日 | ||
j
|
月份内的日期号,无前导零。 | 11 |
d
|
月份内的日期号,有前导零。 | 11 |
z
|
年份内的日期号 (1月1日 = 0)。 “”“注意:”“”要获得ISO规定的日期号,需加上1。 |
131 |
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小时制的时,无前导零。 | 12 |
h
|
12小时制的时,有前导零。 | 12 |
G
|
24小时制的时,无前导零。 | 12 |
H
|
24小时制的时,有前导零。 | 12 |
分 和 秒 | ||
i
|
小时后的分钟数,有前导零。 | 42 |
s
|
分钟后的秒钟数,有前导零。 | 43 |
U
|
UNIX时间(Unix time)。从格林尼治时间(GMT)1970年1月1日00:00:00开始计的秒钟数。 | 1715431363 |
时区(需MediaWiki1.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-05-11T12:42:43+00:00 |
r
|
RFC 5322格式的日期,等价于 D, j M Y H:i:s +0000 ,其中星期名和月份名国际上不通用。
|
Sat, 11 May 2024 12:42:43 +0000 |
非公历日历 | ||
伊斯兰历(Islamic calendar),又称希吉来历(Hijri calendar) | ||
xmj
|
月份内的日期号。 | 3 |
xmF
|
月份名称全称。 | 都尔喀尔德月 |
xmn
|
月份号。 | 11 |
xmY
|
全长表示的年。 | 1445 |
伊朗历(Iranian calendar),又称贾拉利历(Jalali calendar) | ||
xij
|
月份内的日期号。 | 22 |
xiF
|
月份名称全称。 | Ordibehesht |
xin
|
月份号。 | 2 |
xiY
|
全长表示的年。 | 1403 |
xiy
|
2位数表示的年。 | 03 |
希伯来历(Hebrew calendar) | ||
xjj
|
月份内的日期号。 | 3 |
xjF
|
月份名称全称。 | 以珥月 |
xjt
|
当前月份的天数。 | 29 |
xjx
|
属格形式的月份名称。 | Iyar |
xjn
|
月份号。 | 8 |
xjY
|
全长表示的年。 | 5784 |
泰国历(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}} → ב'כ"ד
|
- 格式
{{#time: 格式字符串}}
{{#time: 格式字符串 | 日期/时间对象}}
{{#time: 格式字符串 | 日期/时间对象 | 语言代码}}
- 上面的表格中列出了支持的格式控制代码。“格式字符串”中的任何不被识别的字符将原样输出,包括空格(系统不用它们来编译代码)。
- 还有两种方法可以使“格式字符串”内的字符原样输出:
- 反斜杠
\
后加字符,可以原样输出单个字母: - 一对半角双引号
" "
内的字符被当作文字,会原样输出,不带双引号。
- 反斜杠
- 另外,还可以用
xx
来输出单个字母x
。 - 例子
{{#time: \m}}
→m
{{#time: \xg}}
→x12
(x
被原样输出,g
被当作格式控制代码){{#time: Y-m-d}}
→2024-05-11
{{#time: [[Y]] m d}}
→2024 05 11
{{#time: [[Y (year)]]}}
→2024 (24UTCpmSat, 11 May 2024 12:42:43 +0000)
(year被当作格式控制代码y
、e
、a
、r
){{#time: [[Y "(year)"]]}}
→2024 (year)
{{#time: i“s"}}
→42”43"
- “语言代码”使用的是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
- 如果需要在计算时使用UNIX时间,可以在UNIX时间前加上
@
:{{#time: U | now}}
→1715431363
{{#time: r|@1485582296}}
→Sat, 28 Jan 2017 05:44:56 +0000
- 超过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位数年)
- 可以指定完整的绝对日期,或者是一部分,该函数会将缺少的部分用当前日期的值填补。填补功能在不同情况下填补不同的内容:
{{#time: Y m d H:i:s | June}}
→2024 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}}
→2024 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}}
→2024 4月
- 该函数中“格式字符串”的总长度限制为6000字符。
timel[编辑]
来自ParserFunctions。
该函数与time类似,但该函数使用Wiki本地时间。(在$wgLocaltimezone
中设置)。
- 格式
{{#time: 格式字符串}}
{{#time: 格式字符串 | 日期/时间对象}}
{{#time: 格式字符串 | 日期/时间对象 | 语言代码}}
- 例子
{{#timel:c|now|it}}
→2023-10-29T08:24:21+00:00
titleparts[编辑]
来自ParserFunctions。
把标题字符串用半形斜线“/”分隔,返回指定位置开始,指定长度的标题段落,段落位置从1开始计算。段落长度为0时会返回从段落位置开始的所有段落,段落位置为0时效果和为1时一样。
- 格式
{{#titleparts: 标题字符串 | 段落长度(默认为0) | 段落位置(默认为1)}}
- 所有半形斜线“/”都会被切割,不论是否已有一个标题字符串一模一样并以“/”作为页面名中一个普通字符的页面存在。标题字符串内的所有HTML实体均会自动转换成对应的字符,所以不能用“/”来逃避切割。半形底线“_”会自动转换成半形空格“ ”,也会按照Wiki设定把首字母转成大写。
- 例子
{{#titleparts: 手册:开发/创作工具/ScriptAPI/JavaScript}}
→Manual:开发/创作工具/ScriptAPI/JavaScript
{{#titleparts: 手册:开发/创作工具/ScriptAPI/JavaScript | 1}}
→Manual:开发
,效果同ROOTPAGENAME。{{#titleparts: 手册:开发/创作工具/ScriptAPI/JavaScript | 2}}
→Manual:开发/创作工具
{{#titleparts: 手册:开发/创作工具/ScriptAPI/JavaScript | 2 | 2}}
→创作工具/ScriptAPI
{{#titleparts: 手册:开发/创作工具/ScriptAPI/JavaScript | | 2}}
→创作工具/ScriptAPI/JavaScript
- “段落长度”和“段落位置”均可以使用负数,负数“段落长度”表示从尾开始去掉该数量的段落,负数“段落位置”表示从尾开始计算段落位置。
{{#titleparts: 手册:开发/创作工具/ScriptAPI/JavaScript | -1}}
→Manual:开发/创作工具/ScriptAPI
,效果同BASEPAGENAME。{{#titleparts: 手册:开发/创作工具/ScriptAPI/JavaScript | -4}}
→,去掉的段落数等于段落总数。
{{#titleparts: 手册:开发/创作工具/ScriptAPI/JavaScript | -5}}
→,去掉的段落数超出了段落总数。
{{#titleparts: 手册:开发/创作工具/ScriptAPI/JavaScript | | -1}}
→JavaScript
,效果同SUBPAGENAME。{{#titleparts: 手册:开发/创作工具/ScriptAPI/JavaScript | -1 | 2}}
→创作工具/ScriptAPI
{{#titleparts: 手册:开发/创作工具/ScriptAPI/JavaScript | -1 | -2}}
→ScriptAPI
- 标题字符串最多能含有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}}
→
uc[编辑]
MediaWiki原生函数。
把输入的字符串中所有字母变成大写。
- 格式
{{uc: 字符串}}
- 例子
{{uc: abc}}
→ABC
ucfirst[编辑]
MediaWiki原生函数。
把输入的字符串中第一个字母变成大写。
- 格式
{{ucfirst: 字符串}}
- 例子
{{ucfirst: minecraft}}
→Minecraft
urldecode[编辑]
MediaWiki原生函数。
解码被URL编码的字符串。
- 格式
{{#urldecode: URL编码字符串}}
- 例子
{{#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[编辑]
MediaWiki原生函数。
获取URL编码后的字符串,并可以使用预设空格格式改变编码空格时的效果,可以使用的格式分别是:QUERY(空格变为“+”)、WIKI(空格变为“_”)、PATH(空格变为“%20”)。
- 格式
{{urlencode: 普通字符串 | 空格格式(QUERY、WIKI或PATH,默认为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
var[编辑]
来自Variables。
获取特定变量的内容值,需配合vardefine或vardefineecho使用,比如在这里用{{#vardefine: abc | def}}
定义变量abc。无法获取在后面代码中才定义的变量。当要获取的变量没被定义时,会输出默认值,已被定义的判定可参考varexists。
- 格式
{{#var: 变量名称 | 默认返回值(默认为空字符串)}}
- 例子
{{#var: count | 未定义}}
→未定义
获取未定义的变量count,输出默认值。{{#var: abc | xyz}}
→def
获取已定义的变量abc。
var_final[编辑]
来自Variables。
只使用var和varexists的话,只能顺着代码的流向获取在前面的代码中已经定义的变量。
比如这里的代码位于vardefine下的例子前,如果现在获取{{#var: count}}
,因为定义count的代码还没处理,所以只能获取到变量未定义时默认的空白字符串“”;或者如果使用{{#var: count | 未定义}}
,则返回“未定义”。
而使用var_final就可以获取所有代码均已经过处理后,指定变量的最终内容值。
- 此函数在代码运算的最后关头才会获得返回值,因有此特殊性此函数在很多情况下都会出现未预期的表现,安全起见不建议把此函数放在模板、解析器函数及其他需要后台运算的代码之内,放在纯HTML内则是安全的。
- 格式
{{#var_final: 变量名称 | 默认返回值(默认为空字符串)}}
- 例子
{{#var_final: count | 未定义}}
→1
在此处获取在后面代码中才会被定义的count的内容。
vardefine[编辑]
来自Variables。
把字符串内容作为一个变量储存,便于在后面代码中再次使用。此函数只会在内部改变变量的值,不会输出任何字符。
- 格式
{{#vardefine: 变量名称 | 内容值(默认为空字符串)}}
- 例子
{{#vardefine: count | 0}}
→{{#vardefine: text |}}
→{{#vardefine: text | 新}}
→{{#vardefine: text | {{#var: text}}内容}}
→{{#vardefine: count | {{#expr: {{#var: count}}+1}}}}
→
vardefineecho[编辑]
来自Variables。
用法和内部效果vardefine完全一致,只是会在改变变量值的同时输出改变后变量的值。
- 格式
{{#vardefineecho: 变量名称 | 内容值(默认为空字符串)}}
- 例子
{{#vardefineecho: text | 输出定义值}}
→输出定义值
- 定义变量同时输出变量内容,现在变量text的内容为“输出定义值”。
varexists[编辑]
来自Variables。
用于判断一个变量是否已由vardefine或vardefineecho定义,即使初始值为空字符串,也会被判定为已被定义。若该变量已被定义,会返回“1”,否则返回空字符串,可以直接配合if使用。
- 格式
{{#varexists: 变量名称}}
- 例子
{{#varexists: text}}
→1
{{#varexists: count}}
→1
{{#varexists: null}}
→{{#if: {{#varexists: extra}} | 存在 | 不存在}}
→不存在
while[编辑]
来自Loops。
当型循环。循环解析给定的表达式,当条件值为非空时结束。
- 格式
{{#while: | 条件 | 表达式}}
注意第一个参数不填。
- 例子
{{#vardefine: i | 0}}{{#while: | {{#ifexpr: {{#var: i}} < 5 | true}}{{#vardefine: i | {{#expr: {{#var: i }} + 1}}}} | <nowiki/> * {{#var: i}} }}
→ 按顺序生成数字列表。
- 1
- 2
- 3
- 4
- 5
widget[编辑]
来自Widgets。 调用预先编写好的Widgets小工具,并可以将参数传入Widgets中。小工具的编写方法请参照Extension:Widgets。
- 格式
{{#widget: 小工具名称 | 参数名1=值1 | 参数名2=值2 | ... | 参数名n=值n}}